mvc 4 windows Azure Request.Url中的端口号错误

时间:2014-01-11 13:09:41

标签: asp.net-mvc-4 azure razorengine

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

http://127.0.0.1:81/mypage 

我得到了

http://127.0.0.1:82/mypage 

当我从Request.Url获取网址时。我在visual studio 2012中使用默认的azure模拟器中运行它。

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

1 个答案:

答案 0 :(得分: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语法

中使用