Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PageMethod URL正在被重写,在IIS5.1下处理得不好。是否有不包括创建Web服务的修复程序?_C#_Asp.net Mvc_Iis_Asp.net Mvc Routing - Fatal编程技术网

C# PageMethod URL正在被重写,在IIS5.1下处理得不好。是否有不包括创建Web服务的修复程序?

C# PageMethod URL正在被重写,在IIS5.1下处理得不好。是否有不包括创建Web服务的修复程序?,c#,asp.net-mvc,iis,asp.net-mvc-routing,C#,Asp.net Mvc,Iis,Asp.net Mvc Routing,该问题仅存在于IIS5.1中。我找到了解决这个问题的办法,但并不令人满意。我只是想知道是否还有其他稍微不那么明显的解决办法 问题是我有一个ASP.NET AJAX项目集成到ASP.NET MVC2解决方案中 我在.aspx页面上有一个静态函数,它被标记为WebMethod属性。我这样称呼它: window.PageMethods.set_path(window.pageURL); window.PageMethods.EnableEditMode(function (result) {

该问题仅存在于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,由于Global.asax映射路线不正确,因此导致404

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

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

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"
);
我应该在pagemethods中硬编码并显式处理它们吗?我知道这很难看,但现在这将是一个简单的解决办法

谢谢你的阅读


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

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


你读过斯科特·汉斯曼的作品吗

您是否考虑过将分发服务器升级到IIS Express?如果他们只是在做演示,那么它对他们来说应该很好,你将重新瞄准一个IIS SKU。

IIS5已经有十多年的历史了。你是认真的吗?是的,告诉我。我们打电话给我们的加拿大经销商,他们说他们的演示机都在XP 32位上运行。。。但我们准备告诉他们下一个世纪的到来。只是确保我们必须告诉他们这一点。:)在我的中途,我有一个电话到IgnoreRoute,它将匹配+ +更多。我相信忽略路线不是问题所在。一旦路由被忽略,它的扩展名(none)就会被.*匹配,因为.*正试图匹配MVC操作扩展名(none)。我认为这个问题必须在忽略路由之后得到解决,但是在它到达IIS之前,因为在这一点上两个请求看起来是相同的。这一切都很好。我只是想顺其自然地告诉我的老板我们不再支持IIS5了。嘿,看起来这家伙也有类似的问题:哈哈,我正要删除我的答案,它告诉我“你不能删除一个被接受的答案”。