Iis .NETWebAPI应用程序中的ARR/URL重写器

Iis .NETWebAPI应用程序中的ARR/URL重写器,iis,url-rewriting,asp.net-web-api,arr,Iis,Url Rewriting,Asp.net Web Api,Arr,我有两份申请。其中之一将处理一系列产品的身份验证。正因为如此,从每一个我想重写一个URL从每个单独的网站到我们的“认证”项目。它看起来像这样 -> 因此,本质上是跨域推送请求 为此,我在IIS中设置了ARR和URL重写。然而,我似乎无法让它工作,我有一种感觉,URL重写并没有在通常会导致404的请求上运行。我认为这是因为在重定向请求(301重定向)中,配置可以完美地工作。当我使用重写时,我会得到一个通用的404页面 规则配置如下所示: <rules> <rule nam

我有两份申请。其中之一将处理一系列产品的身份验证。正因为如此,从每一个我想重写一个URL从每个单独的网站到我们的“认证”项目。它看起来像这样

->

因此,本质上是跨域推送请求

为此,我在IIS中设置了ARR和URL重写。然而,我似乎无法让它工作,我有一种感觉,URL重写并没有在通常会导致404的请求上运行。我认为这是因为在重定向请求(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,我只勾选了“启用代理”,但我不确定是否需要执行其他操作

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

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

我也有类似的问题。有趣的是,如果在同一个应用程序中为URL映射了HTTP路由,那么URL重写似乎不会拦截调用。例如,我有/api/。。。映射为web API调用,但具有URL重写规则,这些规则应该重写所有内容。它们不捕获对/api的调用。。。你解决问题了吗?看:是的!我们确实做到了。在执行路由之前,需要添加RouteTable.routes.IgnoreRoute(“api/profiles/{*pathInfo}”);或类似于忽略您的ARR URL。我会发布一个答案。太好了,谢谢!顺便说一句,这不是简单的Ignore()(RouteCollection.Ignore())?很抱歉问一下,你把这段代码剪到哪里了,不容易找到!,也许是全球的。尽快?我使用的是webApi,看起来它没有忽略路由