iis - ASP .NET Core:Directory.EnumerateFiles 和 IIS 托管
问题描述
当我在 IIS 服务器上发布我的 ASP .NET Core (v.2.2) Web 应用程序时,它会在此行引发异常:
Directory.EnumerateFiles(_environment.ContentRootPath + @"/Pages/API")
例外:
执行请求时发生未处理的异常。找不到路径“C:\Release\MySite\Pages\API”的一部分。System.IO.DirectoryNotFoundException 在 System.IO.Enumeration.FileSystemEnumerator`1.CreateDirectoryHandle(字符串路径,布尔型 ignoreNotFound)
当我查看已发布的文件夹时,没有 API 文件夹,但它不应该在我的网站 dll 中吗?或者,当我在 ISS 上发布 Web 项目时,是否可以不使用相对或绝对路径在我的 Web 项目中查找文件?
注意:文件夹 API 中的页面具有 Build Action : 内容,并且代码在开发中没有问题(使用 IIS-express)。
解决方案
对于 asp.net 核心,它会在发布到 Project.Views.dll 时预编译视图。对于Directory.EnumerateFiles
,它只列出磁盘中真实存在的文件。
如需解决方案,请尝试修改您的 project.csproj 以添加<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
.
满的
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" />
</ItemGroup>
</Project>
推荐阅读
- python - 我写了一个简单的 python 游戏,但是里面的函数没有执行
- mysql - 根据 id 对两个表进行分组和连接?
- nestjs - Mikro-Orm 没有创建一个 sqlite 表
- python - 在使用 tkinter 的语言翻译器代码中,如何将输出保存为 pdf?
- python - JSON 到 Excel 使用 Openpyxyl - 转换复杂/嵌套数组
- django - 以 json 格式获取 django_rest_framework 中的错误消息
- javascript - 如何根据列值更改行背景颜色
- c# - MOQ C# 中的设置和退货是什么?
- kotlin - 通过`callbackFow`传递撰写桌面`onClick`的任何(更好)方法?
- ruby-on-rails - Rails:attr_accessor 关联