ASP.NET 5发布的输出没有';t提供来自wwwroot的文件

本文关键字:wwwroot 文件 5发 NET 输出 ASP | 更新日期: 2023-09-27 18:28:47

我的MVC 6 web应用程序的发布版本遇到了很多问题。它在从Visual Studio运行时运行良好,但在从已发布的输出运行时,静态文件不会从wwwroot文件夹中读取。

我知道我的问题应该包括代码示例。这是大量的代码,涉及到将我在VisualStudio中的解决方案与发布的输出进行比较。对于我的代码示例,我创建了一个GitHub repo,它复制了以下内容:https://github.com/TimothyK/Mvc6ServiceEg.

该项目基本上是用于ASP.NET 5 Web应用程序的文件新建项目。然而,最终我想让我的项目作为一个自托管的Windows服务运行。因此,这个项目中有一些代码最终会让它作为Windows服务运行,并手动调用默认的Startup类。此代码摘自本文:http://taskmatics.com/blog/host-asp-net-in-a-windows-service/.除了默认的"web"命令外,该代码还创建了一个名为"run"的DNX命令。

根据readme.md文件,BuildScripts''Publish.bat文件将为要运行的项目创建一个自包含的文件夹。运行Publish.bat脚本后,可以使用C:''Publish''Mvc6ServiceEg''approt''run.cmd.运行自托管web服务器

以这种方式运行时,web服务器不会按预期提供静态文件。您可以通过浏览到http://localhost:5000/images/Banner-02-VS.png。如果你从Visual Studio运行web应用程序,这很好,但如果从发布的run.cmd文件运行,会出现404错误。

我已经弄清楚出了什么问题,但我不知道如何解决。原因是web服务器没有映射到正确的文件夹。静态文件应该托管在C:''publish''Mvc6ServiceEg''wwwroot文件夹中,该文件夹确实包含images''Banner-02-VS.png文件。

web服务器实际托管来自C:''publishMvc6ServiceEg''approt''packages''Mvc6ServicesEg''1.0.0''root的静态文件。您可以通过浏览http://localhost:5000/Project_Readme.html,该文件夹中确实存在。

在发布的输出中有一个hosting.json文件,它应该告诉web服务器webroot是wwwroot文件夹。然而,web应用程序的run.cmd执行路径似乎并不尊重这一点。

有人能告诉我为什么映射不正确吗?提前谢谢。

ASP.NET 5发布的输出没有';t提供来自wwwroot的文件

是否安装了静态文件Nuget包?http://www.nuget.org/packages/Microsoft.AspNet.StaticFiles/

根据您开始使用的模板,这可能已经启用,也可能尚未启用(它不是"空"模板)