【问题标题】:Is there any way to set a generic root path for content in ASP.NET Core?有没有办法为 ASP.NET Core 中的内容设置通用根路径?
【发布时间】:2021-05-01 09:51:26
【问题描述】:

在发布模式下,我遇到了从 ASP.NET Core 应用程序的 wwwroot 文件夹访问静态文件的问题。我将静态文件保存在 wwwroot 文件夹中并使用相对路径访问它们,例如访问 wwwroot/images/test.png 以获取 imgsrc 属性/strong> 标签我指定 /images/test.png 并且图片在本地 IIS Express 开发模式下正确加载。

现在我已经在 IIS 管理器 (TestWebsite) 中创建了网站并将我的 Web 应用程序部署到其中,并且我还在站点 (TestApplicationPool) 中创建了应用程序池,因此它是层次结构如下所示:

我遇到的问题是,在将我的路径部署到静态文件并访问它们之后,我需要在任何路径之前都有 /TestApplicationPool (对于上面的示例,现在我需要指定/TestApplicationPool/images/test.png来访问图片)。所以我的问题是有什么办法可以配置 ASP.NET 应用程序始终使用当前应用程序作为内容根路径,这样我们就不需要在路径中指定任何内容,除了相对于 wwwroot 文件夹的静态文件的路径?

我试图从 IWebHostEnvironmentContentRootPath 变量中获取应用程序名称,并将其插入到静态文件的路径之前,在这种情况下一切正常,但不方便每次我们需要从 wwwroot 文件夹加载静态文件时都这样做。

【问题讨论】:

  • TestApplicationPool 是什么意思?应用程序池不是在网站本身下创建的。这里出了点问题。
  • 从截图来看,TestApplicationPool其实是网站下的一个虚拟目录/应用,可能绑定了同名的应用池。可能只是不幸的命名导致混乱。

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


【解决方案1】:

在 MVC 视图或 Razor 页面中,您可以在路径上使用波浪号和斜线 (~/) 前缀来表示您的 cshtml 视图/页面中大多数位置的 Web 根目录(默认为 wwwroot)。

例如:

<img src="~/hello.jpg" />

即使部署在 IIS 中的虚拟目录下(如您的示例),这也应该转换为正确的路径。

关于 web root 的相关文档可以在这里找到,这里提到了 ~/ https://docs.microsoft.com/en-us/aspnet/core/fundamentals/?view=aspnetcore-5.0&tabs=windows#web-root

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2021-12-27
    • 2017-09-22
    • 2013-10-16
    • 2021-04-01
    • 2011-09-11
    相关资源
    最近更新 更多