<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://goxia.maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://goxia.maytide.net/read.php/1678.htm</link>
<title><![CDATA[[SBS]解决因开启 32BitApponWin64 后出现的 HTTP 503 故障问题]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Microsoft IIS]]></category>
<pubDate>Fri, 14 Jun 2013 07:20:32 +0000</pubDate> 
<guid>https://goxia.maytide.net/read.php/1678.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://www.iis.net/"><img title="IIS7_Welcome" border="0" alt="IIS7_Welcome" src="http://goxia.maytide.net/ftpupfiles/IIS--IIS-7.x--32bit-_BF4E/IIS7_Welcome.png" width="552" height="154"></a></p> <p><font color="#fd3f0d" size="4"><strong>解决因开启 32BitApponWin64 后出现的 HTTP 503 故障问题</strong></font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自从离开 Hosting 行业，好久没有做过 IIS 方面的排错，今天算是遇到了一个，感觉会很常见，所以记录下来以备后用。用户购买了一套 ASP+Access 的小程序（PS：别问为什么还要买这么老旧的架构程序！），配置到用户的 Windows Server 2012 Essentials 环境中运行正常，操作过程并无什么特别，只是为其应用池开启 32位程序支持即可，整个过程非常顺利。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;反而在之后配置到 <a href="http://goxia.maytide.net/" target="_blank">gOxiA</a> 的 Windows Small Business Server 2011 Standard 环境中后一直无法正常运行，IE 访问时提示“Service Unavailable”，经典的 HTTP 503 故障。起初检查 IIS 配置没有发现异常，但是看到对应的应用池会被停掉。于是打开事件查看器查阅日志，发现了很多来源为“IIS-W3SVC-WP”的错误，其内容大致如下：</p> <p>“<font style="background-color: #ffff00"><em>由于配置问题，无法加载模块 DLL “C:Program FilesMicrosoftExchange ServerV14ClientAccessOwaauthexppw.dll”。当前配置仅支持加载为 x86 处理器架构构建的映像。……</em></font>”此外，除了 exppw.dll 文件外还有 kerbauth.dll 也出现错误。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/4c47e9975d77_C8EB/1.png"><img title="1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="1" src="http://goxia.maytide.net/ftpupfiles/4c47e9975d77_C8EB/1_thumb.png" width="634" height="358"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;综上分析，应用程序池的 32位应用支持是正常打开了，但是却无法加载 64位的 DLL 文件。而关闭“enable32BitAppOnWin64”后应用程序池恢复正常，但无法访问 ASP 程序。那么原因应该是出在应用程序池和加载模块的问题上。“exppw.dll”和“kerbauth.dll”文件都属于服务器上的 Exchange Server 2010 所有，这两个文件本身肯定是没有问题的。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;看来还是要锁定到应用程序池方面，应用程序池本身是64位的，只是开启了32位应用支持，所以应用程序池在设置后是正常运行状态。当触发访问请求时，该应用程序池会启动一个新的32位模式的进程，来接受 ASP 类型的访问请求，此时就会导致 32位应用程序池进程（w3wp.exe）与加载的 64位 DLL 出现系统策略上的冲突，被系统强行终止，最终出现前面所述的故障。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要解决这个故障貌似挺难的，难不成跑了64位应用（Exchange Server 2010）的服务器就不能跑 32位 的 ASP 程序了？！看来只能网上找找是否有相关的资料，这还真的找到了！参考资料：<a title="http://blogs.msdn.com/b/rakkimk/archive/2007/11/03/iis7-running-32-bit-and-64-bit-asp-net-versions-at-the-same-time-on-different-worker-processes.aspx" href="http://blogs.msdn.com/b/rakkimk/archive/2007/11/03/iis7-running-32-bit-and-64-bit-asp-net-versions-at-the-same-time-on-different-worker-processes.aspx">http://blogs.msdn.com/b/rakkimk/archive/2007/11/03/iis7-running-32-bit-and-64-bit-asp-net-versions-at-the-same-time-on-different-worker-processes.aspx</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文中末尾提到可以修改“applicationHost.config”文件，为加载的 DLL 指定对应架构模式的 ISAPI Filter 来运行。即，在每个 DLL 加载配置行尾附加“preCondition”参数，如果该 DLL 是 32位那值为“bitness32”，而 64位的则是“bitness64”。修改后的结果可以参考下图：</p> <p><a href="http://goxia.maytide.net/ftpupfiles/4c47e9975d77_C8EB/2.png"><img title="2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="2" src="http://goxia.maytide.net/ftpupfiles/4c47e9975d77_C8EB/2_thumb.png" width="634" height="358"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;针对本例，我们需要修改的有两个：“exppw.dll”和“kerbauth.dll”。最后测试一下结果，网站已经能够正常访问，至此故障消失问题得到了解决！同样，有遇到类似故障的都可参考此法解决。</p><br/>Tags - <a href="https://goxia.maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://goxia.maytide.net/go.php/tags/windows/" rel="tag">windows</a> , <a href="https://goxia.maytide.net/go.php/tags/small/" rel="tag">small</a> , <a href="https://goxia.maytide.net/go.php/tags/business/" rel="tag">business</a> , <a href="https://goxia.maytide.net/go.php/tags/server/" rel="tag">server</a> , <a href="https://goxia.maytide.net/go.php/tags/2011/" rel="tag">2011</a> , <a href="https://goxia.maytide.net/go.php/tags/standard/" rel="tag">standard</a> , <a href="https://goxia.maytide.net/go.php/tags/iis/" rel="tag">iis</a> , <a href="https://goxia.maytide.net/go.php/tags/32bitapponwin64/" rel="tag">32bitapponwin64</a> , <a href="https://goxia.maytide.net/go.php/tags/precondition/" rel="tag">precondition</a>
]]>
</description>
</item>
</channel>
</rss>