Получение полного URL файла любого файла в ASP.Net MVC
Я хочу создать полный URL (с именем домена и т.д.) любого файла в MVC. Пример: файл .jpg
или файл exe
.
Пример: если я даю "~/images/abc.jpg", он должен возвращать " http://www.mywebsite.com/images/abc.jpg"
Мне известно о перегрузке Url.Action
, которая принимает протокол в качестве параметра. Но Url.Action
может использоваться только для Actions.
Я хочу что-то вроде функции Url.Content
, которая принимает протокол в качестве параметра.
Знаете ли вы, если какой-либо метод получит полный URL-адрес любого файла?
Я пробовал: VirtualPathUtility.ToAbsolute
, ResolveClientUrl
, ResolveUrl
, но все они, похоже, не работают.
Ответы
Ответ 1
Вы можете использовать следующий код, чтобы заменить "~/" на 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;
}
Теперь вызов этого метода вернет полный абзац абсолютного значения.
ResolveServerUrl(VirtualPathUtility.ToAbsolute("~/images/image1.gif"),false))
Выход будет http://www.yourdomainname.com/images/image1.gif
Ответ 2
new Uri(Request.Url, Url.Content("~/images/image1.gif"))
Ответ 3
Попробуйте использовать это.
Url.Action("~/images/image1.gif", "/", null, Request.Url.Scheme)