Asp.net mvc 2 400对包含“的URL的错误请求”&&引用;带UrlRoutingModule的IIS7

Asp.net mvc 2 400对包含“的URL的错误请求”&&引用;带UrlRoutingModule的IIS7,asp.net-mvc-2,iis-7,url-routing,asp.net-mvc-routing,Asp.net Mvc 2,Iis 7,Url Routing,Asp.net Mvc Routing,我正在运行IIS 7的旧WebForms站点上设置ASP.net MVC 2.0。旧站点的404处理程序设置如下: <httpErrors errorMode="Custom"> <remove statusCode="404" subStatusCode="-1" /> <error statusCode="404" prefixLanguageFilePath="C:\..." path="/error404.aspx" responseMode

我正在运行IIS 7的旧WebForms站点上设置ASP.net MVC 2.0。旧站点的404处理程序设置如下:

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="C:\..." path="/error404.aspx" responseMode="ExecuteURL" />
</httpErrors>

这个404处理程序用于模拟URL重写,因此像“/+yes-&-no”这样的URL将被路由到它,Server.Transfer()将被发送到正确的页面。这一切都有效

设置ASP.net MVC 2.0时,我将以下内容添加到web.config:

<modules runAllManagedModulesForAllRequests="false">
    <remove name="UrlRoutingModule" />
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>

但出于安全考虑,他们被否决了
  • 我可以使用URL重写将“&”改为“and”,但这会对SEO产生影响,因为这会改变,等等

    ,web.config元素,但我们无法尝试,因为我们仍在.NET 3.5上


  • 还有其他我错过的解决方案吗?你看过Hanselman的这篇文章了吗

    他描述了如何调整被认为无效的字符(在他的博客文章中查找requestPathInvalidCharacters)


    要知道,如果你调整这个,有几个地雷要注意

    你看过Hanselman的这篇文章了吗

    他描述了如何调整被认为无效的字符(在他的博客文章中查找requestPathInvalidCharacters)


    要知道,如果你调整这个,有几个地雷要注意

    是否运行了此处引用的路由调试器:?如果是,您看到您定义的路由发生了什么?我只是添加了它,它还显示“/+yes-&-no”上的“坏请求”,顺便说一下,这不是路由(它被发送到Web表单页)。错误的请求似乎来自IIS本身。我在“/”上尝试了路由调试器,所有路由看起来都正确。您是否运行过此处引用的路由调试器:?如果是,您看到您定义的路由发生了什么?我只是添加了它,它还显示“/+yes-&-no”上的“坏请求”,顺便说一下,这不是路由(它被发送到Web表单页)。错误的请求似乎来自IIS本身。我在“/”上尝试了路由调试器,所有路由看起来都正确。是。这是被拒绝的解决方案#3。我们现在无法升级到.net 4.0。是。这是被拒绝的解决方案#3。我们现在无法升级到.net 4.0。