PageMethod URL正在被重写,并且在IIS5.1下处理得不好.是否有一个不包括创建WebService的修复方
本文关键字:有一个 不包括 是否 创建 WebService 处理 重写 URL PageMethod 1下 IIS5 | 更新日期: 2023-09-27 18:15:37
此问题仅在IIS5.1下存在。我已经找到了解决这个问题的办法,但并不令人满意。我只是想知道是否还有其他稍微不那么明显的解决方案。
问题是我有一个ASP。. NET AJAX项目集成到一个ASP。. NET MVC2解决方案
我在我的.aspx页面上有一个静态函数,它被标记为WebMethod属性。我这样称呼它:
window.PageMethods.set_path(window.pageURL);
window.PageMethods.EnableEditMode(function (result) {
if (result) {
$find(window.leftPaneID).expand(1);
$('#' + window.startEditButtonID).hide();
$('#' + window.finishEditButtonID).show();
}
});
在IIS5.1下,这会导致404,因为全局。Asax映射路由错误
因此,我添加了这一行:routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*'.aspx(/.*)?" });
这很有帮助,但还不够。现在,我收到一个405 POST not allowed。我又读了一些资料,发现这是因为:
Extension: .* // Executable Path: %windir%'Microsoft.Net'Framework'v4.0.3031'aspnet_isapi.dll
如果我在IIS应用程序配置映射中删除这行,我的PageMethod停止405。太棒了!
不幸的是,这完全破坏了web应用程序的mvc方面——URL重写是必要的。
更不幸的是,PageMethods具有与MVC操作相同的扩展。所以,我不知道该怎么办。
我知道我四处阅读并看到一些人使用WebServices来做到这一点。我们正处于发布前的最后测试阶段,在与我的老板交谈后,他不想走这条路,因为我们担心它的复杂性,并且需要比预期更多地重新测试。
因此,我正在寻找其他解决方案。是否可以这样做:
routes.MapRoute(
"Dashboard.aspx/EnableEditMode",
"Dashboard.aspx/EnableEditMode"
);
我硬编码在页面方法预期和处理它们显式?我知道它很丑,但这将是一个简单的修复现在。
感谢阅读
编辑:解决方案显然是停止支持IIS5。:)
EDIT:正如Sean在下面提到的,解决方案是:停止支持IIS 5.1:)
你读过Scott Hanselman的这篇文章吗?
您考虑过将您的分发服务器升级到IIS Express吗?如果他们只是做演示,那么它应该可以很好地为他们工作,你将回到目标单一的IIS SKU。