gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:40 25 4
gpt4 key购买 nike

此问题仅在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com