gpt4 book ai didi

c# - 访问 Azure 应用服务中的 .cshtml 文件时出现路径错误

转载 作者:行者123 更新时间:2023-12-03 06:43:12 28 4
gpt4 key购买 nike

我有一个在 Azure 应用服务上运行的 asp.net core 5 应用程序,该应用程序应获取用作电子邮件模板的 .cshtml 文件。我使用 IWebHostEnvironment 接口(interface)的 .ContentRootPath 属性返回路径的第一部分,并使用字符串将路径的其余部分连接到文件。在本地,一切正常,但当应用程序在 Azure 中运行时,获取 .cshtml 文件时出现问题。

获取 .cshtml 时,出现以下错误:

Could not find a part of the path '/home/site/wwwroot/wwwroot/Templates/Email/EmailRegistroAssinatura.cshtml'

但在本地,这些都没有发生。我期望 .ContentRootPath 属性根据应用程序运行的环境返回路径的第一部分。

我的代码如下:

using Microsoft.AspNetCore.Hosting;

string projectRootPath = _hostingEnvironment.ContentRootPath;
string file = "wwwroot/Templates/Email/" + fileName + ".cshtml";
string path = Path.Combine(projectRootPath, file);

using (StreamReader reader = File.OpenText(path))
{
htmlStringEmail = reader.ReadToEnd();
}

如何在两个环境中使用相同的代码正确获取路径?

最佳答案

经过我的测试,我找到了根本原因。原因是部署时未包含静态文件(文件夹)。你可以去kudu网站查看一下。

  1. 我遇到如下错误消息。

    enter image description here

  2. 我检查了wwwroot下的静态文件,找不到Templates文件夹,然后我手动添加所有文件夹和文件,如下所示。

    enter image description here

  3. 然后我再次测试,效果很好。

    enter image description here

摘要

  1. 如何在部署项目时包含静态文件,可以搜索官方文档。或者手动添加。

  2. 请不要使用.cshtml文件作为模板,您应该使用.html文件,我们知道,wwwroot下的内容应该是静态文件。通常我们会在 Views 文件夹下创建新的 .cshtml 文件。

关于c# - 访问 Azure 应用服务中的 .cshtml 文件时出现路径错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74361913/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com