.NET Core发布到IIS遇到问题 - 403.14

13

我正在尝试将一个在IIS Express中本地运行良好的Core 1.0应用程序发布到运行2012R2的服务器上。

  • 在服务器上安装了DotNetCore.1.0.0-WindowsHosting.exe。
  • 安装了httpPlatformHandler_amd64.msi。
  • 将应用程序池设置为“无托管代码”。
  • 使用“Web Deploy”从VS中发布。
  • 使用本文写作时的最新版VS Core工具。

但我得到的结果只是:

HTTP错误403.14-禁止访问

Web服务器已配置为不列出此目录的内容。

Microsoft的这篇文章中,它只提到选择错误的站点目录会创建403.14 Forbidden错误...但这并不是问题所在。

但是,VS没有发布web.config。而且在DDL中没有“始终复制到服务器”或“内容”的选择,两个选项都不见了。


我正在使用带有Windows身份验证的Visual Studio .Net Core 2.0模板,如果我在本地部署它,然后使用无托管代码和集成管道创建一个站点,我会得到403.14错误。应用程序池是“内置帐户LocalSystem”。我希望有关于如何部署VS提供的特定模板的文档。出现了403.14错误。 - Daniel Jackson
请确保你正在发布到正确的文件夹和/或将IIS指向正确的文件夹。我曾经遇到过这个问题。 - Beau D'Amore
我已经检查过了,但是我首先将其发布到inetpub文件夹,然后设置一个网站到该应用程序目录,以便我可以看到所有的文件。我在使用Windows凭据时遇到了登录错误,所以这可能与Active Directory有关。我以前从未做过这个,所以我正在学习中。感谢您的建议。 - Daniel Jackson
2个回答

6
确保在应用程序池中设置的服务帐户/用户凭据具有运行/访问应用程序的访问权限。这是我在多次部署到IIS时遇到的问题。

enter image description here

关于包含web.config文件,请确保在您的project.json文件中包含以下代码。只需指定您想要包含在发布中的内容。

"publishOptions": {
  "include": [
    "wwwroot",
    "Views",
    "appsettings.json",
    "web.config"
  ]
}

2
好的,我该如何确定应用程序池设置的服务帐户/用户凭据是否有权运行/访问应用程序?它正在使用ApplicationPoolIdentity。顺便说一下,此服务器上还有30多个其他站点正常运行。 - Beau D'Amore
1
那些是内置账户。您没有自定义账户的选项吗?那里您可以指定自己的账户。我会在我的回答中发布一张图片。 - aholtry
2
我刚刚遇到了403错误,原来是我发布到了错误的文件夹。因此,一个空文件夹会产生403错误。只是提供信息。 - aholtry
1
我真是个傻瓜... 我把IIS根文件夹移到了wwwroot的父目录,现在我得到了“哎呀500内部服务器错误”的消息,这意味着它已启动但出现错误...谢谢。 - Beau D'Amore
1
这是个好消息,有时我们只需要说出来。干得好,希望你继续好运。 - aholtry
显示剩余8条评论

5

检查应用程序文件夹中是否有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 命令。 - Martin
为了避免其他人像我们最近一样痛苦地想知道为什么在Visual Studio中“构建”应用程序后,从IIS浏览时我们一直收到“HTTP错误403.14 - 禁止访问”的错误,我们还没有点击播放(绿色三角形)按钮,该按钮会自动创建必要的web.config文件,在我们的情况下使错误消失。 - Michael12345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接