2012-04-05 111 views
0

我負責爲IIS 7.5中的.Net MVC站點創建一些重寫規則。我安裝了Url Rewrite Module,並且配置了一些非常簡單的規則,但沒有成功。URL重寫模塊問題/問題

所以我的第一個問題是,IIS以何種順序處理傳入的url? 它是否包含URL - > URL重寫 - >重寫Url - > .Net MVC路由管理器獲取更新的URL?

如果沒有,那麼它按照哪個順序處理它,以及如何獲取URL重寫來首先處理URL?

還有就是,上面寫着一個複選框「登錄URL重寫」,這是否登錄到IIS日誌,或者這是別的東西?

這裏是重寫入站規則,我創建:

Pattern: (.*)/fin/(.*) 
Rewrite URL: {R:1}/fi/{R:2} 

任何幫助是極大的讚賞。

更新:2012年4月5日 我仍然無法讓它在系統上工作。我嘗試通過本地主機擊中它來消除代理和負載平衡,它仍然無法正常工作。我把它安裝到另一臺機器上,它就像一個冠軍。任何建議將不勝感激。

**更新:2012年4月6日** 我仍然沒有跟蹤到這個問題,但我不知道我的web.config是否爲我的MVC應用程序導致任何問題。它似乎在web.config這些聲明可能會造成這個?:

<system.webServer> 
<validation validateIntegratedModeConfiguration="false"/> 
<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules> 

+0

我不知道所有的答案,所以只是評論。但是,是的,該複選框的確將「東西」放入IIS日誌中。 – ianbailey 2012-04-05 10:02:59

+0

謝謝,有些澄清很好。 – 2012-04-05 21:18:23

回答

0

2012年4月11日更新

URL Rewrite Module實際安裝正確。做了一些非常基本的測試,他們工作。發現我的規則正則表達式不正確(有一個額外的斜線),我需要做一個IISReset。如果有其他人發現這篇文章,請確保您的重定向規則是正確的,並做一個非常簡單的基本測試來驗證其工作。

0

雷,

你說得對重寫處理步驟。在將請求傳遞給相應的asp.net應用程序之前,IIS將首先重寫URL。

注意使用IIS重寫,但路由,因爲它們可以相互爭奪。 特別是如果IIS以您沒有預料到的方式重寫URL。對我來說,這樣的情況下證明傑夫阿特伍德是正確的,他在博客:

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

通常我會在通過IIS重寫使用路由方面發生錯誤,並且只會使用IIS重寫來強制執行一般規則,例如建立規範域(www vs no www),強制小寫URL或強制執行尾隨斜槓上的URL。

你的問題似乎比這更具體。在使用霰彈槍來解決問題(比如URL重寫)之前,我會耗盡所有選項。