.NET Core 2.0部署至IIS后出现‘Index视图未找到’错误求助
解决.NET Core 2.0部署到IIS后找不到Index视图的问题
我之前也踩过完全一样的坑!试了几个办法终于搞定了,你可以挨个排查:
确保视图文件被包含在发布包中
.NET Core默认发布时可能不会自动把.cshtml文件复制到发布目录,尤其是用默认模板创建的项目。你需要在项目的.csproj文件里添加以下配置,强制视图文件被发布:<ItemGroup> <Content Update="Views\**\*.cshtml"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> </ItemGroup>或者在发布项目时,在发布设置里勾选「所有文件」选项,确保视图文件被复制到目标目录。
修正IIS应用程序池的核心设置
- 应用程序池必须设置为无托管代码!因为.NET Core应用是自主托管运行的,IIS仅作为反向代理,选成.NET Framework版本肯定会出问题。
- 同时检查应用程序池的身份权限,确保它拥有发布目录的读取权限,不然即使文件存在也无法访问。
调整ContentRoot的路径配置
你用Directory.GetCurrentDirectory()获取内容根目录,但IIS运行环境下的当前目录和本地开发时完全不同!建议换成官方推荐的默认构建器,它会自动处理IIS环境的路径问题:
替换你当前的Main方法代码为:public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>();确认ASP.NET Core Module已安装
必须在IIS服务器上安装ASP.NET Core Module (ANCM),这是.NET Core应用在IIS上运行的核心组件。如果没装,赶紧安装对应版本的.NET Core托管捆绑包,安装完成后重启IIS再重新部署。查看详细日志定位深层问题
如果上面的方法都没用,打开应用的日志文件(默认在wwwroot/logs目录),或者在IIS里启用失败请求跟踪,获取更详细的错误信息——有时候视图找不到可能是隐藏的权限问题或者路径解析错误。
我当时是因为没配置视图文件的发布复制,加上应用程序池选错了版本,改完这两个地方就正常了,你先从这些点入手排查应该能解决!
内容的提问来源于stack exchange,提问作者Dblock247
相关产品推荐
相关产品推荐

