3

我正在编写一个小的 asp.net MVC4 Web 应用程序。项目模板是 Visual Studio 2012 中的 azure mvc 4 模板。当我在 razor 视图中请求 Request.Url 时,我得到了错误的端口号。例如,如果我的网页网址是

http://127.0.0.1:81/mypage 

我明白了

http://127.0.0.1:82/mypage 

当我从 Request.Url 获取 url 时。我在使用 Visual Studio 2012 获得的默认 azure 模拟器中运行它。

为什么端口号错误?如何纠正它?

4

1 回答 1

1

找到了答案。这篇博客文章很好地解释了原因。

http://blogs.staykov.net/2013/05/windows-azure-basicscompute-emulator.html

Azure 模拟器尝试尽可能多地模拟真实环境。模拟器包括一个隐藏的负载平衡器 (LB)。LB 角色尝试绑定端口 81 并失败(因为它已经绑定),然后尝试绑定到 82 等等(在我的情况下,它在端口 82 上成功)。在此绑定之后,Request.Url 将提供 LB Url。要获取原始的基本网址,您可以使用它

var request = Request.RequestContext.HttpContext.Request;

string baseUrl = request.UrlReferrer.Scheme + "://" +
             request.UserHostAddress + ":" +
             request.UrlReferrer.Port; 

它可以直接在 Razor 语法中使用

于 2014-01-11T13:42:02.070 回答