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。:)

PageMethod URL正在被重写,并且在IIS5.1下处理得不好.是否有一个不包括创建WebService的修复方

EDIT:正如Sean在下面提到的,解决方案是:停止支持IIS 5.1:)

你读过Scott Hanselman的这篇文章吗?

您考虑过将您的分发服务器升级到IIS Express吗?如果他们只是做演示,那么它应该可以很好地为他们工作,你将回到目标单一的IIS SKU。

相关文章: