c# - Aspnet core 2.1.4 IIS 启动问题
问题描述
几天前我在 AspNet Core 2.1.2 中做了一个简单的 POC,没有任何问题。我能够从 IIS Express 和本地 IIS(通过 Visual Studio 托管或启动/调试)运行它。
我昨天将项目更新为最新的 AspNet Core 2.1.4,现在似乎无法在我的本地 IIS 中运行任何 AspNet Core 应用程序。
我创建了一个新项目(没有 https)以确保迁移不是问题。
关于我的环境:
- 视觉工作室 2017 (15.8.4)
- IIS 10.0.17134.1
- 从这里下载的最新包(即使已经包含在最新的 VS 版本中):https ://www.microsoft.com/net/download/dotnet-core/2.1 下载
测试用例 :
- 创建了一个新的“ASP.NET Core Web 应用程序”-> API -> 无身份验证和无 HTTPS
- NetCore 2.1 版
创建解决方案后,直接在 IIS Express 中运行即可。选择以应用程序名称命名的其他配置文件也有效(正确启动控制台和服务)
然后我想将它托管在我的本地 IIS 中:
- 添加一个具有自定义端口 (5555) 的新网站,并将物理路径设置为解决方案文件夹(bin/obj/program.cs/...)
- 创建后,浏览该站点会引发“配置错误”:正常,没有可用的 web.config。
- 然后我在VS中右键单击我的项目,选择“属性”和“调试”
- 我这样创建一个新的配置文件: 配置文件
- 我创建了一个包含以下内容的 web.config 文件(并将在我更改运行配置文件时进行转换): Web.config
- 该项目未“正确设置”(与我之前使用 AspNet Core 2.1.2 的 POC 一样正确)
问题 :
- 如果我尝试通过 IIS 浏览网站,则会出现错误 500
- 如果我尝试使用“IIS”配置文件调试解决方案,则会出现这样的错误: 启动错误
- 所有 HttpFailure*.html 文件都是空的 (0kb)
- 事件查看器中没有错误
- 启用后 IIS 日志文件中没有错误
- 当参数 stdoutLogEnabled 设置为 true 时,没有日志文件(除非通过不同于 IIS 的配置文件启动,但仍然没有错误)
测试
我尝试过了 :
- 重新启动我的电脑
- 以管理员身份启动 VS
- 对适用于“所有人”和所选 IIS 池用户的文件系统授予完全权限
IIS Express 和“控制台”配置文件仍然有效。
EDIT1:我还卸载了所有内容并尝试恢复到 2.1.2 但没有成功(仍然使用最新的 VS)
解决方案
我设法找到了丢失的东西:
在“Windows 功能”中,未勾选以下元素:“Internet 信息服务”->“万维网服务”->“通用 HTTP 功能”->“Http 错误”
我知道它是在安装 AspNet Core SDK/bundle 之前打勾的,因为提供了详细的错误页面。
无论如何,一旦再次启用此选项,我就会收到一个错误,指出我无法覆盖参数 XXX,因为它已被锁定。我必须在服务器功能委派中将其设置为读/写。
然后一切顺利。
我无法想象通过安装 SDK/bundle 将“Http Errors”恢复为取消勾选值,并且我自己没有取消勾选(再次,本地计算机)。
我会把它放在 IIS 恶作剧选项卡上......
推荐阅读
- r - 具有多个参考书目的 pkgdown 文章中的路径错误
- javascript - 从 Firebase 功能使用 Cloud SQL 代理
- database - 如何仅安装 YugaByte 客户端程序
- c++ - does g++ compiler treats constexpr functions as regular in a case their return value isnt being used?
- sql - 在此 SQL 代码中使用“INTERSECT”有什么问题
- docker - 暂时禁用 docker 容器网络接口
- javascript - Firebase SDK 删除整个集合而不是只删除一个文档
- mysql - 将四个 MySQL 查询减少到一个
- visual-studio-code - 错误:(jupyter 服务器崩溃。无法连接。来自 jupyter 的错误代码:1)
- sql - SQL 视图,默认值为 null