Vin*_*sca 10 c# iis asp.net-core
我在 Windows 10 机器上将 .NET Core 应用程序部署到 IIS 时遇到问题。
当我部署到 IIS 并导航到该站点时,我收到以下消息:
"HTTP Error 500.31 - Failed to load ASP.NET Core runtime
Common solutions to this issue:
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526
Run Code Online (Sandbox Code Playgroud)
在我的事件查看器中,对页面的每次调用都会生成 3 条错误消息。
无法找到应用程序依赖项。确保安装了应用程序针对的 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 版本。
找不到“aspnetcorev2_inprocess.dll”。异常信息:
无法启动应用程序“/LM/W3SVC/4/ROOT”,错误代码“0x8000ffff”。
仅就这些而言,我会认为项目构建中存在一些问题,或者我安装了一些 .NET Core 包,除了:
我认为我配置 IIS、站点或应用程序池的方式一定存在一些问题,但我可以说没有任何区别。如果有人遇到过这种情况,我会听取建议。
Mar*_*ese 33
与Alex Monkey 的回答类似,我缺少托管捆绑包。
更具体地说,我的问题是我不小心只安装了运行时而不是托管包。我假设下图中的“x64”链接会下载该捆绑包的 x64 版本,但事实并非如此。
您需要单击“Hosting Bundle”一词才能获取正确的安装程序:
在此处获取任何版本的 .NET 的托管捆绑包。
Ric*_*imo 17
我在 IIS 服务器上收到与新的 .NET Core 3.1 框架相关的 Web 应用程序相同的错误消息,该服务器已经托管其他 .NET Core 3.1 框架相关的 Web 应用程序,没有任何问题。事件查看器中的消息略有不同;但也很难找到——有时我看不到任何似乎相关的事件。
\n如果我将该网站转换为独立的“win-x86”,它就可以工作;但独立的“win-x64”不起作用。
\n经过几天的...
\ndotnet --infoIIS 服务器,dotnet --info构建服务器,...这原来是一个应用程序池设置。
\n在AppPool的高级设置中,有一个“启用32位应用程序”设置,IIS认为默认为False;但我的却是真的。当分别为 False 和 True 时,切换此设置会导致站点工作和失败。
\n它在我的网站上被设置为 True,因为我们使用octopusdeploy来部署我们的网站,并且“IIS AppPool \xe2\x80\x93 Create”步骤有一个与此设置相关的选项;但在 Octopus 中,默认值为 True,因此需要关闭此功能。
\nAle*_*key 11
就我而言,目标机器缺少 ASP.NET Core 运行时本身。
从 https://dotnet.microsoft.com/download/dotnet-core/3.1安装Hosting Bundle后问题已解决
尽管 99% 的情况下,这可能是由于 .NET/.NET Core 的运行时版本缺失或不正确,但您可以尝试以下操作:
检查 web.config 文件中 aspNetCore XML 元素的arguments 属性是否指向正确的project.dll 文件(并且该文件存在)。
就我而言,我为一个项目有一个完美设置的 web.config 文件,并且倾向于将其复制到新项目中。
有时,我会忘记更改该区域中的参数值,从而产生错误,使您认为这是您的 dotnet 版本的运行时问题。
帮助我实现这一目标的是,它与我的共享托管计划中的空白 .NET6 项目一起工作,因此我知道这不是缺少.NET6 运行时问题。
<aspNetCore
processPath="dotnet"
arguments=".\YourProject.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" hostingModel="inprocess"
>
<environmentVariables>
<environmentVariable
name="ASPNETCORE_ENVIRONMENT"
value="Development"
/>
</environmentVariables>
</aspNetCore>
Run Code Online (Sandbox Code Playgroud)
这里:arguments=".\YourProject.dll"
使用@LexLi 建议(和创建)的工具,我能够确定问题是由应用程序池没有站点文件夹的权限引起的。授予它权限解决了这个问题。从错误消息中并不清楚这一点。如果其他人遇到相同的错误消息,请在此回答。
我的修复是:在错误中,它通常会显示它尝试加载哪个版本的运行时,以及它找到的版本。runningdotnet --info给出已安装的 .NET 运行时的列表:

我的缺少 5.0.0。所以我去了https://dotnet.microsoft.com/en-us/download/dotnet/5.0
并扩展了 5.0.0 并安装了我需要的版本。解决方案现在构建良好。

小智 5
我有同样的问题...
我的解决方案非常简单,同时又有点尴尬:)我认为 asp.net core 主机包是向下兼容的。
解决方案:我的应用程序配置为3.1。作为目标框架,但我在 iis 上安装了 5.0.9 托管捆绑包。
在我安装了正确版本的托管捆绑包后,3.1. 版本,成功了!
| 归档时间: |
|
| 查看次数: |
23234 次 |
| 最近记录: |