.NET Core 发布到 IIS 问题 - 403.14
Posted
技术标签:
【中文标题】.NET Core 发布到 IIS 问题 - 403.14【英文标题】:.NET Core publishing to IIS problems - 403.14 【发布时间】:2016-08-30 15:14:47 【问题描述】:我正在尝试将 Core 1.0 应用程序发布到 2012R2 机器上,该机器在 IIS Express 中本地运行良好。
在服务器上安装了 DotNetCore.1.0.0-WindowsHosting.exe 已安装 httpPlatformHandler_amd64.msi 将应用程序池设置为“无托管代码” 使用“Web Deploy”从 VS 发布 撰写本文时最新的 VS Core 工具我得到的是:
HTTP 错误 403.14 - 禁止
Web 服务器配置为不列出此内容 目录。
在this article from Microsoft 中只提到通过为站点选择错误的目录会创建 403.14 Forbidden 错误...事实并非如此。
但是,VS 不会发布 web.config。并且没有选择“始终复制到服务器”或“内容”(在 DDL 中),这两个选项都缺失。
【问题讨论】:
我正在使用内置 Windows 身份验证的 Visual Studio .Net Core 2.0 模板,如果我在本地部署它,然后使用无托管代码和集成管道为其创建站点,我会得到这个 403.14。 ApplicationPool 是“内置帐户 LocalSystem”。我希望有关于如何部署 VS 提供的特定模板的文档。收到 403.14 错误。 确保发布到正确的文件夹和/或将 IIS 引导到正确的文件夹。我遇到了这个问题。 我检查了它,但我首先发布到 inetpub 文件夹,然后我在应用程序的该目录中设置了一个网站,我可以在其中查看所有文件。我收到 Windows 凭据登录错误,因此这可能与 Active Directory 有关。以前从来没有这样做过,所以我边走边学。感谢您的意见。 【参考方案1】:确保应用程序池上设置的服务帐户/用户凭据有权运行/访问应用程序。这是我在部署 IIS 几次时遇到的问题。
至于包含 web.config,请确保在您的 project.json 文件中包含以下代码。只需指定要在发布中包含的内容即可。
"publishOptions":
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config"
]
【讨论】:
好的,我如何确定应用程序池上设置的服务帐户/用户凭据是否有权运行/访问应用程序?它正在使用 ApplicationPoolIdentity。这台服务器上还有 30 多个其他网站运行良好,仅供参考。 这些是内置帐户。您没有自定义帐户的选项吗?您可以在此处指定自己的帐户。我将在上面的答案中发布它的图片。 我自己又遇到了 403 错误,结果发现我发布到了错误的文件夹。所以空文件夹会产生403错误。仅供参考 我是个白痴...我将 IIS 根文件夹移动到 wwwroot 上方的父目录,现在我收到“oops 500 internal server error”,这意味着它已启动但出现错误...谢谢 这是个好消息,有时我们只需要说出来。干得好,我希望你继续好运。【参考方案2】:检查您的应用程序文件夹中是否有 web.config。如果文件夹中没有 web.config IIS 不知道它是 ASP.NET Core 应用程序,它认为您正在尝试在该文件夹中列出文件。 所以如果在项目配置中将 IsTransformWebConfigDisabled 属性设置为 true,会导致构建时在发布文件夹中不会生成 Web.config 文件。 因此,在 YourProjectName.csproj 文件中将 IsTransformWebConfigDisabled 属性更改为 false,如下所示:-
<IsTransformWebConfigDisabled>false</IsTransformWebConfigDisabled>
【讨论】:
运行dotnet publish --configuration Release
时会生成 web.config 文件,如果您缺少该文件,则很可能没有运行 dotnet publish 命令。以上是关于.NET Core 发布到 IIS 问题 - 403.14的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core发布到iis后出现An error occurred while starting the application
由于 ErrorCode = '0x80004005:80008083,.NET Core 应用程序无法在 IIS 中启动