.net Web API应用程序中的ARR / URL重写器

时间:2014-02-10 00:41:43

标签: iis url-rewriting asp.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,我只是勾选了“启用代理”,但我不确定是否需要执行其他操作。

1 个答案:

答案 0 :(得分:1)

我设法通过为ARR添加忽略路由来解决这个问题。

RouteTable.Routes.IgnoreRoute("api/profiles/{*pathInfo}");