我在一个在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-&amp; -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>
添加此内容后,所有包含&符号的网址(例如“/ + yes-&amp; -no”)都会返回:
错误请求
如何启用UrlRoutingModule,并且仍允许带符号的网址?
拒绝解决方案:
我能够使用网址重写来更改“&amp;”到“和”,但这有SEO含义,因为它会改变&lt; h1&gt;等等。
&lt; rule name =“RemoveIllegalAmpersands”&gt; &lt; match url =“(+。)&amp;(。))”/&gt; &lt; action type =“Rewrite”url =“{R:1}和{R:2}”/&gt; &LT; /规则&GT;
我看到了requestPathInvalidCharacters,web.config元素,但我们无法尝试,因为我们仍在使用.NET 3.5
还有其他我错过的解决方案吗?
答案 0 :(得分:0)
您是否看过Hanselman的这篇文章?
他描述了如何调整哪些字符被视为无效(在他的博客文章中查找requestPathInvalidCharacters)。
请注意,如果你调整它,有几个地雷需要注意。