获取ASP.Net MVC中任何文件的完整URL

时间:2010-01-15 06:47:04

标签: asp.net-mvc asp.net-mvc-routing

我想在MVC中生成任何文件的完整Url(带域名等)。示例:.jpg文件或exe文件。

示例:如果我提供“〜/ images / abc.jpg”,则应返回“http://www.mywebsite.com/images/abc.jpg

我知道以协议作为参数的Url.Action重载。但Url.Action只能用于操作。

我想要像Url.Content这样的函数,它将协议作为参数。

您知道是否有任何方法可以获取任何文件的完整网址?

我尝试过:VirtualPathUtility.ToAbsoluteResolveClientUrlResolveUrl,但所有这些似乎都不起作用。

3 个答案:

答案 0 :(得分:56)

new Uri(Request.Url, Url.Content("~/images/image1.gif"))

答案 1 :(得分:49)

您可以使用以下代码将“〜/”替换为absoulute URL。

System.Web.VirtualPathUtility.ToAbsolute("~/")

修改

首先,您需要定义一个方法。

public static string ResolveServerUrl(string serverUrl, bool forceHttps)
{
    if (serverUrl.IndexOf("://") > -1)
        return serverUrl;

    string newUrl = serverUrl;
    Uri originalUri = System.Web.HttpContext.Current.Request.Url;
    newUrl = (forceHttps ? "https" : originalUri.Scheme) +
        "://" + originalUri.Authority + newUrl;
    return newUrl;
} 

现在调用此方法将返回完整的absolure url。

ResolveServerUrl(VirtualPathUtility.ToAbsolute("~/images/image1.gif"),false))

输出将为http://www.yourdomainname.com/images/image1.gif

答案 2 :(得分:-6)

尝试使用它。

Url.Action("~/images/image1.gif", "/", null, Request.Url.Scheme)