【发布时间】:2014-05-08 05:51:02
【问题描述】:
我有两个应用程序。其中一个将处理一系列产品的身份验证。正因为如此,我想从每个单独的网站重写一个 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 映射了 HTTP 路由,则 URL 重写似乎不会拦截调用。所以例如我为 Web API 调用映射了 /api/...,但有应该重写所有内容的 URL 重写规则。他们没有捕捉到对 /api 的调用......你解决了这个问题吗?
-
是的!我们确实得到了这个工作。在你做你的路线之前,你需要添加 RouteTable.Routes.IgnoreRoute("api/profiles/{*pathInfo}");或类似忽略您的 ARR URL。我会发布一个答案。
标签: iis url-rewriting asp.net-web-api arr