Sco*_*lie 7 .net asp.net iis .net-core asp.net-core
我正在尝试发布一个在 IIS 下运行的 asp.net core v3 应用程序。我创建了一个虚拟目录,转换为应用程序。它有自己的 IIS 应用程序池,使用 CLR 设置:无托管代码、32 位:假和管道:集成。将应用程序发布到目录中,按预期创建默认的 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>
Run Code Online (Sandbox Code Playgroud)
如果我转到我网站的物理目录并手动运行“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 参数。
总是同样的错误。
Ale*_*xei 10
导致相同错误的愚蠢原因:在 web.config 文件中指定不正确的启动程序集 (dll):
<aspNetCore processPath="dotnet" arguments=".\not_to_be_found.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
Run Code Online (Sandbox Code Playgroud)
如果发布时未刷新 web.config 并且程序集名称已更改,则可能会发生这种情况。
重新创建我的 AppPool 解决了这个问题。它与非工作 AppPool 相同,因此它必须是创建顺序问题。第一个 AppPool 安装在 v3 版本的 aspnet 核心模块之前,或者类似的东西。谢谢莱克斯。
归档时间: |
|
查看次数: |
10066 次 |
最近记录: |