Asp.net

如何在 MVC3 中使用 https 生成絕對 URL?

  • April 4, 2011

我正在使用 MVC3 並嘗試從 https 提供內容,問題是當我呼叫 Url.Content 時,仍然使用相對 url 從 http 提供文件。我認為這個問題在 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 或其他。

正如 Khalid 在評論中指出的那樣,您可以使用的各種開源項目中已經提供了類似的擴展方法(如果許可證允許)。一個例子可以在這裡找到。

引用自:https://stackoverflow.com/questions/5539156