3

我有两个应用程序。其中一个将处理一系列产品的身份验证。正因为如此,我想从每个单独的网站重写一个 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,我只是勾选了“启用代理”,但我不确定是否需要做其他任何事情。

4

1 回答 1

2

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

RouteTable.Routes.IgnoreRoute("api/profiles/{*pathInfo}");
于 2014-05-07T21:51:02.637 回答