web-dev-qa-db-ja.com

ASP.Net MVCのファイルの完全なURLを取得する

MVC内の任意のファイルの完全なURL(ドメイン名などを含む)を生成したい。例:.jpgファイルまたはexeファイル。

例:「〜/ images/abc.jpg」を指定すると、「 http://www.mywebsite.com/images/abc.jpg "が返されます。

プロトコルをパラメーターとして受け取るUrl.Actionオーバーロードを知っています。ただし、Url.Actionはアクションにのみ使用できます。

プロトコルをパラメータとして使用するUrl.Content関数のようなものが必要です。

ファイルの完全なURLを取得する方法があるかどうかを知っていますか?

私は試してみました:VirtualPathUtility.ToAbsoluteResolveClientUrlResolveUrlしかし、これらのすべてが機能していないようです。

29
Gautam Jain

次のコードを使用して、「〜/」を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;
} 

このメソッドを呼び出すと、完全な絶対URLが返されます。

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

出力はhttp://www.yourdomainname.com/images/image1.gif

49
Adeel
new Uri(Request.Url, Url.Content("~/images/image1.gif"))
56
arni