Получение полного URL любого файла в ASP.Net MVC - PullRequest
29 голосов
/ 15 января 2010

Я хочу создать полный URL-адрес (с именем домена и т. Д.) Любого файла в MVC. Пример: файл .jpg или файл exe.

Пример: если я дам "~ / images / abc.jpg", он должен вернуться "http://www.mywebsite.com/images/abc.jpg"

Мне известно о перегрузке Url.Action, которая принимает протокол в качестве параметра. Но Url.Action можно использовать только для действий.

Я хочу что-то вроде Url.Content функции, которая принимает протокол в качестве параметра.

Знаете ли вы, если какой-либо метод, чтобы получить полный URL-адрес какого-либо файла?

Я пробовал: VirtualPathUtility.ToAbsolute, ResolveClientUrl, ResolveUrl, но все это, похоже, не работает.

Ответы [ 3 ]

56 голосов
/ 30 декабря 2013
new Uri(Request.Url, Url.Content("~/images/image1.gif"))
49 голосов
/ 15 января 2010

Вы можете использовать следующий код для замены "~ /" для абсолютирования URL.

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

Edit:

Сначала вам нужно определить метод.

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;
} 

Теперь вызов этого метода вернет полный URL-адрес освобождения.

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

Выход будет http://www.yourdomainname.com/images/image1.gif

0 голосов
/ 20 ноября 2013

Попробуйте использовать это.

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