就在今天,微软发布了一个新的Windows 11 ARM更新,终于支持IIS。这在理论上为.NET开发人员打开了大门,使他们能够在配备M1芯片的新款Macbook Pro上完全开发.NET应用程序。
然而,我遇到了麻烦,让我的ASP.NET Core 6应用程序在Windows 11 ARM上的IIS中运行。
在IIS中应用池的高级设置中,有一个新选项“在ARM 64上启用仿真”。如果我关闭了此选项(默认设置),那么当我尝试启动应用时,它会停止应用池并在事件日志中记录此错误:
由于配置问题,无法加载模块DLL“C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll”。当前配置仅支持加载为ARM 64处理器架构构建的映像。数据字段包含错误号。要了解有关此问题的更多信息,包括如何排除此类处理器体系结构不匹配错误的故障,请参阅http://go.microsoft.com/fwlink/?LinkId=29349。
如果我为应用程序池启用ARM 64仿真设置,则在应用程序启动时会出现以下错误:HTTP错误500.30 - ASP.NET Core应用程序无法启动。事件日志显示此错误:
“C:\WINDOWS\system32\conhost.exe”的激活上下文生成失败。清单或策略文件“C:\WINDOWS\system32\conhost.exe”第0行中出错。Xml语法无效。
有没有其他人让他们的ASP.NET Core 6应用程序在Windows ARM环境中的IIS上成功运行?
1条答案
按热度按时间flvlnr441#
我能够让我的ASP.NET应用程序在我的新Macbook Pro上运行在Windows 11 Preview for ARM的IIS下;不仅仅是.NET 6 ASP.NET应用程序,还包括ASP.NET Core 3.1和ASP.NET Framework应用程序(新的IIS应用程序池“在ARM 64上启用仿真”设置工作得很好!)为了克服我原来文章中的错误,我不得不:
1.修复我的ASP.NET核心运行时安装。
1.修复我的Windows主机捆绑包安装。
1.更改我的web.config,以不同的方式启动dotnet应用程序:
< aspNetCore processPath=“C:\Program Files\dotnet\dotnet.exe”arguments=“exec“bin\Web.dll””stdoutLogEnabled=“false”hostingModel=“InProcess”>
...必须改为:
我相信修复是必需的,因为我最初在安装IIS之前安装了ASP.NET核心和主机包(因为IIS还不存在!))
2023更新:
如果您升级到.NET 7或.NET 8,并且遇到可怕的“当前配置仅支持加载为AMD 64处理器架构构建的映像”错误,那么您需要做的就是按照ancm-arm64 github repo中的说明进行操作,这将使用在ARM芯片上工作的修补程序替换一些ASP.NET Core dll。如果任何微软开发者看到这篇文章,你真的应该在ASP.NET核心安装程序中应用这个补丁。