我正在尝试使用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。
提前致谢!

有帮助吗?

解决方案

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

我认为这就是为什么您获得404的原因。

您还可以尝试在通配符映射上禁用“验证文件存在”复选框,以适应该方案,何时将实际的URL稍后重写为其他东西。

其他提示

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

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

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

如果您可以提供有关您看到的行为的更多信息,我将更新此信息

更新

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

您正在为您的文件提供分开的映射(在这些情况下.aspx和.ASMX):

localhost/userChecker.aspx/checkifuseremailsexists

localhost/userChecker.asmx/checkifuseremailsexists

当您关闭外卡映射时,正在使用这些映射,并且使用或忽略了“/checkifuseremailsexists”。当您打开通配符映射时,您的路由不会通知您的应用程序如何正确“路由”。

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

localhost/userchecker/checkifuseremailsexists

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

我建议检查CMS框架外的URL;问题必须与URL路由有关。没有通配符映射,它的工作原理没有。

要理解的问题:1。在没有通配卡映射的情况下尝试时,您的CMS运行? 2.该CMS系统如何与IIS相互作用; iaspi dll?还是HTTP处理程序/模块?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top