【发布时间】:2020-03-12 01:33:52
【问题描述】:
我正在尝试发布一个在 IIS 下运行的 asp.net core v3 应用程序。我创建了一个虚拟目录,转换为应用程序。它有自己的 IIS 应用程序池,使用 CLR 设置:无托管代码、32 位:False 和管道:集成。将应用程序发布到目录,按预期创建默认 web.config 和所需的 json 文件。网络配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\PatientPlace3.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
如果我去我网站的物理目录并手动运行“dotnet .\myapp.dll”,我可以在5001端口运行它没有问题。我的客户端应用程序和 api 调用一切正常。当我尝试转到 IIS 下的 URL 时,出现 503 错误,并且在事件查看器中:
无法找到应用程序依赖项。确保已安装应用所针对的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本。
然后
找不到“aspnetcorev2_inprocess.dll”。异常消息: 由于找不到指定的命令或文件,无法执行。 可能的原因包括: * 你拼错了一个内置的 dotnet 命令。 * 您打算执行 .NET Core 程序,但 dotnet-.\PatientPlace3.dll 不存在。 * 您打算运行一个全局工具,但在 PATH 上找不到具有此名称的 dotnet 前缀可执行文件。
另一个线索是,当我第一次访问该 url 时,IIS 为 DefaultAppPool 启动了一个 w3wp 进程,而不是我的自定义 CORE 进程。我在所有 Program FIles\dotnet\shared[frameworkname][version] 目录(2.1.8 到 3.0.0)中都有 aspnetcorev2_inprocess.dll,并安装了模块。我尝试将该 dll 复制到我的应用程序目录中,并完全限定 dotnet 参数。
总是同样的错误。
【问题讨论】:
-
进程监视器可能会告诉您有关文件访问部分的更多信息。
-
谢谢莱克斯。试过进程监视器,但是w3wp.exe进程下没有dotnet.exe。我还尝试使用部署模式发布:自包含。该选项会在我网站的物理文件夹中抛出大量 dll,甚至包括 aspnetcorev2_inprocess.dll。还是找不到。
-
在 IIS 中重新创建我的应用程序池似乎已经让我克服了这个问题。
-
那么你应该发布你自己的答案并接受它。
标签: asp.net .net asp.net-core iis .net-core