我需要为我的 ASP.NET MVC 4 应用程序中的特定文件创建一个绝对 URL。我目前正在通过生成相对路径Url.Content
,然后使用以下扩展方法创建绝对路径来执行此操作。
public static string Absolute(this UrlHelper url, string relativeUrl)
{
var request = url.RequestContext.HttpContext.Request;
return string.Format("{0}://{1}{2}{3}",
(request.IsSecureConnection) ? "https" : "http",
request.Url.Host,
(request.Url.Port == 80) ? "" : ":" + request.Url.Port,
VirtualPathUtility.ToAbsolute(relativeUrl));
}
在 Azure 模拟器下运行时,我需要创建的正确 URL 是,http://127.0.0.1/myfile.jpg
但是当此代码执行时,端口号返回为 81,因此生成的 URL 是http://127:0.0.1:81/myfile.jpg
. 但是,如果我去http://127:0.0.1:81/myfile.jpg
它当然不起作用,因为 Azure 模拟器正在侦听端口 80,而不是 81。
我认为这与内置的 Azure Emulator/IIS Express 负载平衡器有关,但我不确定需要对我的Url.Absolute
方法进行哪些更改才能返回准确的 URL。