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

发布于 2024-08-17 22:26:37 字数 552 浏览 4 评论 0原文

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

示例:如果我给出“~/images/abc.jpg”,它应该返回“http ://www.mywebsite.com/images/abc.jpg"

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

我想要类似 Url.Content 函数,它将协议作为参数。

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

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

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

Spring初心 2024-08-24 22:26:37
new Uri(Request.Url, Url.Content("~/images/image1.gif"))
new Uri(Request.Url, Url.Content("~/images/image1.gif"))
何以笙箫默 2024-08-24 22:26:37

您可以使用以下代码将“~/”替换为绝对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

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

救星 2024-08-24 22:26:37

尝试使用这个。

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

Try use this.

Url.Action("~/images/image1.gif", "/", null, Request.Url.Scheme)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文