1

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

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

localhost/UserChecker.aspx/CheckIfUserEmailsExists

localhost/UserChecker.asmx/CheckIfUserEmailsExists

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

更新

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

4

4 回答 4

2

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

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

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

于 2009-08-14T06:37:57.643 回答
1

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

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

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

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

更新

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

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

localhost/UserChecker.aspx/CheckIfUserEmailsExists

localhost/UserChecker.asmx/CheckIfUserEmailsExists

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

如果您删除了扩展名(打开了通配符映射),以下工作是否有效?

本地主机/UserChecker/CheckIfUserEmailsExists

于 2009-08-13T13:34:09.507 回答
0

将适当的 URL 添加到排除列表:使用站点管理器->设置选项卡中的“排除的 URL”设置。(基本帮助文档

于 2009-09-05T01:48:31.593 回答
0

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

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

于 2009-11-17T10:14:47.730 回答