微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows应用程序池在Windows 10中以32位模式失败

在我的开发机器上,每当我将IIS应用程序池设置为以32位模式运行时,任何启动的Web应用程序都将挂起.在浏览器中访问时,应用程序将“挂起”大约5-10秒,然后才会收到503错误.应用程序的应用程序池将在此时停止,并且必须显式重新启动.

在64位(认)模式下,一切都很好,但是每当池切换到32位时,它甚至会立即挂在新的网站中的静态页面上.

当以32位模式发布到我的实时服务器时,相同的应用程序运行正常,因此看起来这是某种配置问题.我启用了失败请求跟踪,但日志中没有显示任何内容.

由于一些旧的COM依赖项,我有几个必须运行32位的应用程序,但我无法让服务器运行.

可能导致此问题的任何想法?

好的,我发现了问题,这是AspNetCore模块,其中64位版本在IIS模块列表中没有位数值而注册.

此问题并非特定于AspNetCoreModule,除了安装模块时未指定bitness64(对于64位版本).如果没有位数值,模块即使在32位模式下也会加载并导致服务器崩溃.

一个失败点是IIS重写模块,当Windows更新时,它会因类似原因而被软管.每次Windows更新时,重写模块都会为我打破IIS(32位和64位).这是初始失败和事件日志条目.重新安装重写模块后,AspNetCoreModule错误开始显示在事件日志中.我在我的博客上有更多信息:https://weblog.west-wind.com/posts/2015/jul/05/windows-10-upgrade-and-iis-503-errors

为了修复AspNetCore模块的位数,我改变了Applicationhost.config中的位数:

<add name="AspNetCoreModule" image="%systemRoot%\system32\inetsrv\aspnetcore.dll" preCondition="bitness64" />

注意前提条件= bitness64,这是使32位AppPools再次工作所需的全部,因为这可以防止模块加载到32位进程.重新安装AspNet Server运行时可能也可以解决这个问题,但我没有验证这一点.

当应用程序启动时发生503错误时,它们通常与应用程序池相关,并且不会显示在FREB日志中. EventLog确实有更多信息,在这种情况下首先指向重写模块,然后指向AspNet核心模块.

原文地址:https://www.jb51.cc/windows/364956.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐