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

asp.net – 如何在MVC3中使用https生成绝对URL?

发布时间:2020-12-16 00:36:41 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC3,并尝试从https提供内容,问题是当我打电话Url.Content文件仍然从http使用相对URL提供。我以为这个问题在MVC3中被解决了,但我似乎找不到任何解决方案。有人知道这个问题在MVC3中是如何解决的,以及如何完成它,还是需要创建自己的帮助方法来
我正在使用MVC3,并尝试从https提供内容,问题是当我打电话Url.Content文件仍然从http使用相对URL提供。我以为这个问题在MVC3中被解决了,但我似乎找不到任何解决方案。有人知道这个问题在MVC3中是如何解决的,以及如何完成它,还是需要创建自己的帮助方法来生成基于协议的绝对URL?

解决方法

您可以使用 VirtualPathUtility.ToAbsolute实现自己的解决方案。可能是这样的:
public static class UrlHelperExtension {
  public static string Absolute(this UrlHelper url,string relativeOrAbsolute) {
    var uri = new Uri(relativeOrAbsolute,UriKind.RelativeOrAbsolute);
    if (uri.IsAbsoluteUri) {
      return relativeOrAbsolute;
    }
    // At this point,we know the url is relative.
    return VirtualPathUtility.ToAbsolute(relativeOrAbsolute);
  }
}

你会喜欢的:

@Url.Absolute(Url.Content("~/Content/Image.png"))

(没有自己测试,随意玩弄,使其正常工作。)

这有助于您为您的内容文件生成绝对URL。为了更改生成的URL的方案,您可以创建一个额外的扩展方法来处理给定URL的方案,以使其成为HTTPS或其他。

正如哈立德在评论中指出的那样,类似的扩展方法已经可以在各种开源项目中使用,您可以使用(鉴于许可证许可)。一个例子可以发现here。

(编辑:李大同)

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

    推荐文章
      热点阅读