我在IIS 7上運行的舊WebForms站點上設置了ASP.net MVC 2.0。舊站點的404處理程序設置爲:400在IIS7上包含UrlRoutingModule的URL包含「&」的錯誤請求
<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(例如 「/ +是 - & -no」 )返回:
壞請求
如何保持啓用UrlRoutingModule,仍然允許與ampersan網址d?
拒絕解決方案:
- 我能得到these registry changes的工作,但他們已經否決出於安全考慮。
我能夠使用URL重寫,改變「&」爲「和」,但有SEO的意義,因爲這改變了<H1>等
<規則名稱=「RemoveIllegalAmpersands」 > <匹配URL = 「&)(+ 。)(。)」/ > <動作類型= 「重寫」 URL = 「{R:1}和{R:2}」/ > < /規則>
只見requestPathInvalidCharacters,web.config中元素,但我們不能嘗試它,因爲我們仍然在.NET 3.5
有沒有,我已經錯過了任何其他解決辦法?
你有沒有運行一個路由調試器,如這裏引用的一個:http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx?如果是,你看到你定義的路線發生了什麼? – counsellorben
我只是添加它,並且它還在「/ + yes - & - no」上顯示「Bad Request」,順便說一下,它不是路由(它被髮送到Web Forms頁面)。壞請求似乎來自IIS本身。我在「/」上試過路由調試器,所有的路由看起來都是正確的。 –
那麼你的解決方案是什麼? – jaminto