【问题标题】:ASP.NET MVC 6 application's virtual application root pathASP.NET MVC 6 应用程序的虚拟应用程序根路径
【发布时间】:2016-01-29 11:03:25
【问题描述】:

如何获取应用程序在服务器上的虚拟根路径?

换句话说:如何在 ASP.NET MVC 6 中执行以下操作?

HttpContext.Current.Request.ApplicationPath

【问题讨论】:

  • @DanielJ.G.,我做到了,它为您提供了项目文件夹的绝对路径,这不是我需要的。
  • 你不能只用@Url.Content("~/")吗?我也刚刚查看了the source code,它正在使用HttpContext.Request.PathBase将“~”解析为应用程序路径
  • @DanielJ.G.,是的,我认为你是对的,尽管我在任何地方都找不到合适的 PathBase 属性规范。请发表您的答案。

标签: asp.net-mvc asp.net-core-mvc


【解决方案1】:

您需要的可以使用@Url.Content("~/") 来实现,它将“~”映射到您的虚拟应用程序根路径。

看看source code,似乎是使用HttpContext.Request.PathBase 属性:

public virtual string Content(string contentPath)
{
    if (string.IsNullOrEmpty(contentPath))
    {
        return null;
    }
    else if (contentPath[0] == '~')
    {
        var segment = new PathString(contentPath.Substring(1));
        var applicationPath = HttpContext.Request.PathBase;

        return applicationPath.Add(segment).Value;
    }

    return contentPath;
}

【讨论】:

    【解决方案2】:

    我在 MVC Core RC2 中使用以下内容:

    我用的是"~/something"而不是

    Context.Request.PathBase + "/something"

    或者更简单,只需使用"/something",这意味着以斜杠开始的路径告诉asp核心从根开始。

    【讨论】:

    • 谢谢... Context.Request.PathBase 工作并提供了虚拟目录路径
    猜你喜欢
    • 2011-11-22
    • 2011-01-23
    • 2012-05-23
    • 1970-01-01
    • 2020-01-19
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多