【问题标题】:Why does IIS wild card mapping break my AJAX calls?为什么 IIS 通配符映射会破坏我的 AJAX 调用?
【发布时间】:2009-08-13 13:08:43
【问题描述】:

我正在尝试使用 jQuery 进行一些 AJAX 调用,但是因为我在 IIS 6 中打开了通配符映射(到 .NET),所以它似乎不起作用。禁用映射会使一切都神奇地工作。

我已经将 web 方法属性放在 .aspx 页面和 .asmx web 服务中的方法上,但都不起作用。这是我用于 AJAX 调用的示例 URL:

localhost/UserChecker.aspx/CheckIfUserEmailsExists

localhost/UserChecker.asmx/CheckIfUserEmailsExists

我认为它一定与.NET 解释 URL 的方式有关,但我不完全确定为什么。更重要的是,我不知道如何修复它,除了禁用通配符映射!还有其他方法吗???

更新

我使用的 CMS (Kentico) 做了一些 URL 路由,但即使我跳过 global.asax.cs 代码中的路由,我仍然会得到 404。
提前致谢!

【问题讨论】:

  • 你也在做url路由吗?

标签: c# asp.net iis-6 webmethod wildcard-mapping


【解决方案1】:

使用 IIS 上的通配符映射将首先通过通配符处理程序运行初始请求。这将在您的 CMS 进行任何 URL 重写(或 URL 路由)之前完成。

我认为这就是你得到 404 的原因。

您还可以尝试禁用通配符映射上的“验证文件是否存在”复选框,以适应实际 URL 稍后将被重写为其他内容的情况。

【讨论】:

    【解决方案2】:

    这不是一个完整的答案,但我希望它能为您指明解决方案的方向。

    您是否尝试过直接在浏览器中访问 url 并使用一些放置良好的断点来追踪问题?

    如果您收到 404,听起来您的路由规则不起作用。

    [如果你能提供更多关于你所看到的行为的信息,我会更新这个]

    更新

    我认为可能发生的事情是这样的:

    您正在为带有扩展名的文件(在这些情况下为 .aspx 和 .asmx)提供单独的映射:

    localhost/UserChecker.aspx/CheckIfUserEmailsExists

    localhost/UserChecker.asmx/CheckIfUserEmailsExists

    当您关闭通配符映射时,这些映射将被使用,并且“/CheckIfUserEmailsExists”被处理为使用或忽略。 当您打开通配符映射时,您的路由不会通知您的应用如何正确“路由”。

    如果您删除了扩展(启用了通配符映射),以下操作是否有效?

    localhost/UserChecker/CheckIfUserEmailsExists

    【讨论】:

    • 我已经尝试调试它,但我不完全确定我在寻找什么。我在 global.asax.cs Application_BeginRequest 事件处理程序中放置了一个断点,并跳过了 Kentico 的路由代码,但它仍然给我一个 404。如果我自己访问服务或页面,它工作正常。但是当我添加“.NET Invoke”语法并附加一个“/”和方法名称时它不起作用。如果我禁用通配符映射,一切正常。
    • 删除扩展不起作用,我不确定这有什么帮助? IIS 和 .NET 如何知道如何管理请求?
    • 我不知道 Kentico,你说你正在做某种路由,你试图使用通配符的事实意味着你试图通过 asp dll 发送所有请求 -除非我误解了这个问题!
    • 我的意思是,他们怎么知道如何解释请求并提供正确的页面或数据?
    • 不幸的是,我不知道 Kentico,但我假设他们有某种形式的 HttpModule 或处理程序正在执行此操作,这将提供此功能:devnet.kentico.com/docs/devguide/index.html?wildcard_urls.htm
    【解决方案3】:

    将适当的 URL 添加到排除列表:使用站点管理器->设置选项卡中的“排除的 URL”设置。 (basic help documentation)

    【讨论】:

      【解决方案4】:

      我建议在 CMS 框架之外检查 URl;问题必须与 URL 路由有关。不知道没有通配符映射它是如何工作的。

      需要理解的问题: 1.在尝试不使用通配符映射时,您的 CMS 是否正在运行? 2、这个CMS系统如何与IIS交互; IASPI DLL ?还是 HTTP 处理程序/模块?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 2015-01-03
        • 2013-06-25
        • 2013-06-07
        相关资源
        最近更新 更多