我有兩個應用程序。其中之一是要處理各種產品的認證。正因爲如此,我想從每一個網站改寫一個URL到我們的「身份驗證」項目。它看起來像這樣。.net Web API應用程序中的ARR/URL重寫器
http://www.mywebsite.com/api/profile/login - >http://www.myauthentication.com/api/profile/login。
所以基本上推送請求跨域。
爲此,我在IIS中設置了ARR和URL重寫。然而,我似乎無法得到它的工作,我有一種感覺URL重寫沒有運行通常會導致404的請求。我認爲這是因爲在REDIRECT請求(301重定向),配置完美工作。當我使用重寫時,我得到一個通用的404頁面。
規則配置看起來按照以下:
<rules>
<rule name="Route the requests for the Profile API." enabled="true" stopProcessing="true">
<match url="^profiles/(.*)" />
<action type="Rewrite" url="http://authentication.local/api/profiles/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
應當指出的是,我使用的WebAPI,不MVC,這我不知道這是造成問題或沒有。因爲重定向工作,但不是重寫,我相信我已經安裝了一切安裝在IIS中。
對於ARR,我只是勾選了「啓用代理服務器」,但我不確定是否需要執行其他任何操作。
我有類似的問題。有趣的是,似乎URL重寫不攔截呼叫,如果在同一個應用程序中爲該URL映射了HTTP路由。所以例如我有/ API/...映射爲Web API調用,但有URL重寫規則,應該重寫所有內容。他們不會接到/ api的電話...你解決了這個問題嗎? – Piedone
參見:http://stackoverflow.com/questions/13885343/rewrite-rule-for-webapi-fails-because-of-extensionlessurlhandler和http://stackoverflow.com/questions/15437131/iis7-asp-net-mvc -webapi-rewrite – Piedone
是的!我們確實得到了這個工作。在執行路由之前,需要添加RouteTable.Routes.IgnoreRoute(「api/profiles/{* pathInfo}」);或類似的可以忽略你的ARR網址。我會發佈一個答案。 – MindingData