重写到外部域不在Azure网站中工作

时间:2015-03-03 23:00:49

标签: azure rewrite

我在azure cloud的标准计划中有一个Asp.NET MVC测试网站。我正在尝试重写外部域。我按照这里的步骤进行了操作:http://ruslany.net/2014/05/using-azure-web-site-as-a-reverse-proxy/

我还在RouteConfig中设置了忽略规则,并在应用设置中添加了WEBSITE_PRIVATE_EXTENSIONS。 XDT转换的日志看起来很成功,但响应是找不到的页面。重写URL步骤也正常,因为我可以在跟踪文件中看到它。跟踪文件中的确切错误消息是:

模块名 IIS Web Core

通知 MAP_REQUEST_HANDLER

的HTTPStatus 404

HttpReason 找不到

HttpSubStatus 4

错误码 文件名,目录名或卷标语法不正确。  (0x8007007b)

更新: 我现在可以确认重写到同一个域工作。但是,重写到外部域的工作方式始终是当前网站的主页。

我完全没有想法。请分享您可能拥有的最疯狂! 谢谢!

2 个答案:

答案 0 :(得分:0)

如果您使用MVC,则MVC路由器会拦截所有请求,ARR不会看到它们,因此不会转发,从而导致HTTP 404 - 找不到文件错误。

通过添加以下内容告诉MVC路由单独离开您的代理来修复它:

routes.IgnoreRoute("proxy/{*pathInfo}"); 

到Global.asax

如果这没有用,那么从Azure站点诊断页面启用failed Request Tracing,会产生非常有用的信息。

希望这有帮助。

答案 1 :(得分:0)

幸运的是,我能够做到这一点。经过几个小时的阅读和尝试不同的东西后,我仔细查看了Ruslan博客文章中的例子。

<?xml version="1.0"?>  
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">  
<system.webServer>  
<proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false"  
reverseRewriteHostInResponseHeaders="false" />  
</system.webServer>  
</configuration> 

请注意,它表示reverseRewriteHostInResponseHeaders =&#34; false&#34;。好吧,让这个真实让我的东西工作。

与复制/粘贴编程相同的旧故事。遗憾的是,这是你应该如何设置它的实际例子。