为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ASP.NET Core 2.1 发布到 Azure 后无法加载静态文件

使用 ASP.NET Core 2.1 发布到 Azure 后无法加载静态文件

C#
交互式爱情 2021-12-25 18:40:23
使用ASP.NET Core 2.1,我尝试在我的开发机器上本地加载相同的静态文件(通过 Visual Studio 2017),并在网站发布到托管环境(Azure Web Apps)之后。考虑file.xml要提供的静态文件 ( ) 驻留在 Web 根目录中的目录层次结构:wwwroot    css    images    js    xml        file.xml这是我加载文件的控制器:public class DevelopmentController : Controller{    private readonly IHostingEnvironment _env;    public DevelopmentController(IHostingEnvironment env)    {        _env = env;    }    public async Task<string> Test()    {        string result = "";       // Test Code Here        XmlDocument doc = new XmlDocument();        doc.Load(Path.Combine(_env.WebRootPath, "xml", "file.xml"));        return result;    }}这会在我的开发机器上本地加载文件,但是,一旦将 Web 应用程序发布到 Azure,我就会收到以下错误:DirectoryNotFoundException: 找不到路径“D:\home\site\wwwroot\wwwroot\xml\file.xml”的一部分无论我尝试什么,在文件发布到 Azure 后,我似乎都无法加载它。注意:在 中ASP.NET MVC 5,我曾经能够使用该Server.MapPath()函数加载一个静态文件,该文件在本地和 Azure 中都可以使用。例如:doc.Load(System.Web.HttpContext.Current.Server.MapPath("~/xml/file.xml"));但是自从升级到ASP.NET Core 2.1.这些是 Microsoft Docs,我用作参考:https : //docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.1&tabs=aspnetcore2x
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

您的问题似乎是该文件未发布,并且与运行时发生的情况无关。

如果您在dotnet publish本地运行,您可能会看到相同的行为,但发布文件夹中可能缺少该文件。

至于为什么它没有被发布,我不是这方面的专家,但这个答案可能会有所帮助:ASP.NET Core:在发布时排除或包含文件


查看完整回答
反对 回复 2021-12-25
?
慕慕森

TA贡献1856条经验 获得超17个赞

对于那些遇到此问题但对于.js文件(或类似)的人,请确保您environment在View.


默认示例是这样的:


<environment exclude="Development">

    <script src="~/js/site.min.js" asp-append-version="true"></script>

</environment>

所有工作都在site.js NOT 中完成site.min.js。发布将使用与environment您正在开发的内容不同的内容,这会对您的结果产生影响。


查看完整回答
反对 回复 2021-12-25
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

尝试:


XmlDocument doc = new XmlDocument();

doc.Load(_env.ContentRootPath + "\\xml\\file.xml", FileMode.Open);


查看完整回答
反对 回复 2021-12-25
  • 3 回答
  • 0 关注
  • 236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信