自从更换了苹果 mac book pro 的 m1 芯片的笔记本作为开发电脑以后,遇到了很多奇怪的问题。比如,IIS 就无法正常的启动,甚至应用程序池都会无故的崩溃,无奈我更换了 win11 22H2 的 ARM 版本镜像,安装的时候选择 win11 专业版。如果你不是这个版本,可能操作的步骤会和我的不一样。

首先,我用的是 win11 22H2 的 ARM 版本镜像,安装的是 win11 专业版系统,安装的时候,先安装了.net 环境,然后,再去 windows 功能中,安装了 iis 服务器。此时,我准备部署以前的一个 mvc 的程序,突然发现出现了 IIS10.0 HTTP 错误 500.19,如下:

解决方法:
%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

相信很多人,网上查询后,也差不多是这个结果,但是,实际上,你执行了这两句命令后,问题还是不能得到解决。

会出现下面的这种错误情况:

HTTP 错误 500.21 - Internal Server Error
处理程序 「ExtensionlessUrlHandler-Integrated-4.0」 在其模块列表中有一个错误模块 「ManagedPipelineHandler」
最可能的原因:
使用了托管处理程序,但是未安装或未完整安装 ASP.NET。
处理程序模块列表的配置中存在书写错误。
在应用程序初始化期间,要么应用程序初始化功能已将 skipManagedModules 设置为 True,要么重写规则设置了映射到托管处理程序的 URL 并且还设置了 SKIP_MANAGED_MODULES=1

解决方法:
执行命令

dism /online /enable-feature /featurename:IIS-ISAPIFilter
dism /online /enable-feature /featurename:IIS-ISAPIExtensions
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45
dism /online /enable-feature /featurename:IIS-ASPNET45

做完以上的操作,一般来说,有些朋友能够解决问题,但是,对于我的 win11 专业版来说,因为是 arm 版本,另外 iis 又是新装的,所以,直接给我又出现了如下的错误:
当前标识 (IIS APPPOOL\XXXX) 没有对 「C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files」 的写访问权限。
解决方法:
打开 powershell 或者 cmd,用管理员身份运行以下命令
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet_regiis.exe -ga 'IIS APPPOOL\XXXX'
另外, 对 windows 文件夹中的 temp 文件夹进行权限设置

就在我以为能够成功的时候,再次运行刷新,又给我提示如下错误:
当前标识 (NT AUTHORITY\SYSTEM) 没有对 「C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files」 的写访问权限。
于是,我翻阅网上资料,都是千篇一律的抄袭文章,都让执行命令:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i -enable 但是,实际上没有任何用处。
于是我想是不是压根就没有这个文件夹路径,直接对文件夹进行权限设置。
果然,我发现没有这个文件夹,果断新建了,同时,赋予了 everyone 的权限,全部可写,完全控制,毕竟本机开发也不用限制那么严格。
如下:

就当我以为能够完成成功了,正常刷新出网页了,但是,又给我提示了如下错误:
未能加载文件或程序集 「xxx.ooo.WebApiService」 或它的某一个依赖项。试图加载格式不正确的程序。
那这个问题还是比较好解决的,因为我老项目源码中,引用了 x86 核心的东西,而我当前 iis 应用程序池是 arm 的。
解决方法:

最终,我之前的老项目的成功启动

这些都是我个人一步步处理研究的心得,希望能够帮助有缘人,另外,我很厌恶网上千篇一律抄袭的文章。

发表回复