我正在编写一个小型的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模拟器中运行它。
为什么端口号错了? 如何纠正?
答案 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语法
中使用