加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在Visual Studio Windows Azure模拟器下运行ASP.NET MVC应

发布时间:2020-12-15 04:31:37 所属栏目:百科 来源:网络整理
导读:我需要在ASP.NET MVC 4应用程序中创建特定文件的绝对URL.我目前正在通过Url.Content生成相对路径,然后使用以下扩展方法创建绝对路径. public static string Absolute(this UrlHelper url,string relativeUrl){ var request = url.RequestContext.HttpContext
我需要在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));
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读