首页 > 解决方案 > 访问在 azure 服务器上运行的 .net 核心应用程序中的共享视图文件夹

问题描述

在本地运行我的站点时,我正在访问共享视图文件夹中的文件,如下所示:

string[] files = Directory.GetFiles("Views/Shared");

因为我通过 API 调用动态获取页面内容,并且某些字段写入了部分视图以覆盖默认呈现。我只是在 api 调用中获取与某些内容匹配的共享视图名称,将其设置在一个变量中,然后使用该变量在 .cshtml 页面中呈现部分视图。

这在本地工作正常,但在部署到 Azure 后失败,但一些谷歌搜索告诉我,我应该访问项目文件的方法是使用 IWebHostEnvironment.ContentRootPath。同样,这在本地工作得很好;但在部署到 Azure 后,文件夹结构发生变化,因此 /views/shared 文件夹(或除 wwwroot 之外的任何项目文件夹)不存在。我认为azure 只是在构建项目,因为有一个 views.dll 文件;但现在我不知道如何将这些文件名设置为模型中的变量。

部署后有没有办法遍历我的 /views/shared 文件夹?

标签: c#azureasp.net-core

解决方案


部署到 Azure 后,文件夹结构发生变化,因此 /views/shared 文件夹(或除 wwwroot 之外的任何项目文件夹)不存在。我认为 azure 只是在构建项目,因为有一个 views.dll 文件;但现在我不知道如何将这些文件名设置为模型中的变量。

您可以尝试将CopyRazorGenerateFilesToPublishDirectory属性设置为true,这将有助于将 RazorGenerate 项目 (.cshtml) 文件复制到发布目录。

<PropertyGroup>

  <!--other properties here-->

  <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
  
  <!--other properties here-->

</PropertyGroup>

有关更多信息,请查看以下文档:

https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-5.0#properties

在此处输入图像描述


推荐阅读