Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting full url of any file in ASP.Net MVC

I want to generate complete Url (with domain name etc) of any file in MVC. Example: A .jpg file or an exe file.

Example: If I give "~/images/abc.jpg" it should return "http://www.mywebsite.com/images/abc.jpg"

I am aware of the Url.Action overload that takes the protocol as a parameter. But Url.Action can be used only for Actions.

I want something like Url.Content function that takes protocol as a parameter.

Do you know if any method to get complete url of any file?

I have tried: VirtualPathUtility.ToAbsolute, ResolveClientUrl, ResolveUrl but all of these don't seem to work.

like image 252
Gautam Jain Avatar asked Jan 15 '10 06:01

Gautam Jain


2 Answers

new Uri(Request.Url, Url.Content("~/images/image1.gif")) 
like image 56
arni Avatar answered Sep 19 '22 14:09

arni


You can use the following code to replace "~/" to absoulute URL.

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

Edit:

First you need to define a method.

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

Now call this method will return the complete absolure url.

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

The output will be http://www.yourdomainname.com/images/image1.gif

like image 31
Adeel Avatar answered Sep 21 '22 14:09

Adeel