自从更换了苹果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的。
解决方法:

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

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

发表回复