IIS Url Rewrite返回404错误

时间:2015-04-24 06:30:44

标签: iis url-rewriting

我有一个带有重写URL的IIS站点,用于隐藏API用户的端口(不是我的选择)。换句话说,主方将网址重写为同一台机器上不同的网站。

因此,如果我访问(端口11001仅用于测试,它最终将在端口80上):

$scope.user

我希望重写从(分别)返回结果:

http://apitest.mycompany.com:11001/v1/accounts
http://apitest.mycompany.com:11001/v1/swagger/docs/accounts

此处只有一个重写规则正在运行,但第二个URL被重写并正确返回时,第一个URL会产生404错误。

我可以直接访问这两个重写的链接,它们会起作用。我也可以根据完全相同的规则进行临时重定向。

我的重写规则如下:

http://apitest.mycompany.com:9600/v1/accounts
http://apitest.mycompany.com:9600/v1/swagger/docs/accounts

我一直在查看失败的重写日志文件,但我无法看到问题所在:

fr000037.xml

freb.xsl

1 个答案:

答案 0 :(得分:0)

经过两天编写每一个可想到的重写规则组合后,我终于发现了这个与规则无关的问题。

问题发生在RouteConfig。保留默认值为:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

意味着ASP.NET路由将捕获由少于4个路径元素组成的任何路由,而不是URL Rewrite。我希望其他人可以详细说明为什么会这样,但看起来这个顺序是:

Redirect > ASP Routing > Rewrite

我希望其他人可以使用这个答案,因为这花费了我两天的工作时间。