我在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)
更新: 我现在可以确认重写到同一个域工作。但是,重写到外部域的工作方式始终是当前网站的主页。
我完全没有想法。请分享您可能拥有的最疯狂! 谢谢!
答案 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;。好吧,让这个真实让我的东西工作。
与复制/粘贴编程相同的旧故事。遗憾的是,这是你应该如何设置它的实际例子。