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

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

概述我需要在ASP.NET MVC 4应用程序创建特定文件的绝对URL.我目前正在通过Url.Content生成相对路径,然后使用以下扩展方法创建绝对路径. public static string Absolute(this UrlHelper url, string relativeUrl){ var request = url.RequestContext.HttpContext.R 我需要在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.

解决方法 您可以依赖客户端发送的主机头:
public static string absolute(this UrlHelper url,string relativeUrl){    var request = url.RequestContext.httpContext.Request;    return string.Format("{0}://{1}{2}",request.headers["Host"],VirtualPathUtility.Toabsolute(relativeUrl));}
总结

以上是内存溢出为你收集整理的c# – 在Visual Studio Windows Azure模拟器下运行ASP.NET MVC应用程序时创建正确的绝对URL全部内容,希望文章能够帮你解决c# – 在Visual Studio Windows Azure模拟器下运行ASP.NET MVC应用程序时创建正确的绝对URL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存