c# - PageMethod URL 正在重写并且在 IIS5.1 下处理不当。是否有不包括创建 WebService 的修复程序?

标签 c# asp.net-mvc iis asp.net-mvc-routing

此问题仅在 IIS5.1 下存在。我找到了解决问题的方法,但并不令人满意。我只是想知道是否还有其他不太明显的解决方案。

问题是我有一个集成到 ASP.NET MVC2 解决方案中的 ASP.NET AJAX 项目。

我的 .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,因为 Global.asax 映射的路由不正确。

因此,我添加了这一行:routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?"});

这很有帮助,但还不够。现在,我收到不允许的 405 POST。我多读了一点书,发现这是因为:

Extension: .* // Executable Path: %windir%\Microsoft.Net\Framework\v4.0.3031\aspnet_isapi.dll

如果我在 IIS 应用程序配置映射中删除此行,我的 PageMethod 将停止 405ing。太棒了!

不幸的是,这完全破坏了 Web 应用程序的 MVC 方面——URL 重写是必要的。

更不幸的是,PageMethods 具有与 MVC 操作相同的扩展名。所以,我不确定该怎么做。

我知道我四处阅读并看到一些人使用 Web 服务来执行此操作。我们正处于发布前的最后阶段测试,在与我的老板交谈后,他不想走这条路,因为我们担心它的复杂性以及需要比预期更多的重新测试。

因此,我正在寻找其他解决方案。是否可以做类似的事情:

routes.MapRoute(
    "Dashboard.aspx/EnableEditMode",
    "Dashboard.aspx/EnableEditMode"
);

我在预期的页面方法中硬编码并显式处理它们的地方?我知道这很丑陋,但现在这将是一个简单的修复。

感谢阅读

编辑:显然,解决方案是停止支持 IIS5。 :)

最佳答案

编辑: 正如肖恩在下面提到的,有效的解决方案是:停止支持 IIS 5.1 :)

你读过this post吗?斯科特·汉塞尔曼?

关于c# - PageMethod URL 正在重写并且在 IIS5.1 下处理不当。是否有不包括创建 WebService 的修复程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8248375/

相关文章:

windows - XP/Vista/Win7 中的同时连接

c# - 如何只允许整数进入文本框

c# - 3501.ToString ("X") 日快乐!

c# - process.WaitForExit(int32) 异步

c# - 将数据绑定(bind)到 WPF 用户控件

asp.net - 将 MVC View 绑定(bind)到 IEnumerable<KeyValuePair<string, bool>> 问题

asp.net - 我可以在 .aspx 页面中使用 ViewBag 吗?

javascript - asp.net MVC中通过ajax请求下载文件

azure - ASP.NET WebAPI URL 版本控制

c# - 在 IIS 7 中克隆/复制/复制现有应用程序池