c# - 访问在 azure 服务器上运行的 .net 核心应用程序中的共享视图文件夹
问题描述
在本地运行我的站点时,我正在访问共享视图文件夹中的文件,如下所示:
string[] files = Directory.GetFiles("Views/Shared");
因为我通过 API 调用动态获取页面内容,并且某些字段写入了部分视图以覆盖默认呈现。我只是在 api 调用中获取与某些内容匹配的共享视图名称,将其设置在一个变量中,然后使用该变量在 .cshtml 页面中呈现部分视图。
这在本地工作正常,但在部署到 Azure 后失败,但一些谷歌搜索告诉我,我应该访问项目文件的方法是使用 IWebHostEnvironment.ContentRootPath。同样,这在本地工作得很好;但在部署到 Azure 后,文件夹结构发生变化,因此 /views/shared 文件夹(或除 wwwroot 之外的任何项目文件夹)不存在。我认为azure 只是在构建项目,因为有一个 views.dll 文件;但现在我不知道如何将这些文件名设置为模型中的变量。
部署后有没有办法遍历我的 /views/shared 文件夹?
解决方案
部署到 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
推荐阅读
- javascript - 反应组件的计时器/计数器 - 使用 setInterval() 增加后值保持为 0
- java - XSL 样式表不保留编码值
- asp.net-mvc - 为什么我的 Web API 在发布到 Web API 时收到空值?不只为一个客户工作
- c++ - 我正在使用基于 arm 的拱门将数据发送到基于 x86 的拱门。在发送或接收数据之前,我是否必须编写代码来更改字节顺序?
- javascript - JS Bcrypt 到 c#
- mapbox - SnapChat 的 MapBox Snap 地图城市边界更新
- javascript - 没有这样的文件或目录 react-native/scripts/libraries
- php - 出现草稿类别的产品
- javascript - 反应钩子 setState 和 useContext 不起作用
- r - 如何将特定行合并到新列中?