gpt4 book ai didi

c# - 在 Visual Studio Windows Azure 模拟器下运行 ASP.NET MVC 应用程序时创建正确的绝对 URL

转载 作者:太空狗 更新时间:2023-10-29 20:07:40 24 4
gpt4 key购买 nike

我需要在 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 模拟器/IIS Express 负载均衡器有关,但我不确定需要对 Url.Absolute 方法进行哪些更改才能返回准确的 URL .

最佳答案

您可以依赖客户端发送的 Host header :

public static string Absolute(this UrlHelper url, string relativeUrl)
{
var request = url.RequestContext.HttpContext.Request;

return string.Format("{0}://{1}{2}",
(request.IsSecureConnection) ? "https" : "http",
request.Headers["Host"],
VirtualPathUtility.ToAbsolute(relativeUrl));
}

关于c# - 在 Visual Studio Windows Azure 模拟器下运行 ASP.NET MVC 应用程序时创建正确的绝对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com