IIS7从32位迁移到64位的问题

目前,我们正在将多个站点从x86 win 2008迁移到2008年的x64 win。我们已经将config目录从旧服务器复制到新服务器,但是当我们启动服务器时,我们得到了一个503错误页面并在事件日志中有5个警告,然后出现错误。

警告:

A listener channel for protocol 'http' in worker process '2060' serving application pool 'SiteAppPool' reported a listener channel failure. The data field contains the error number. 

事件的xml:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows-WAS" Guid="{524B5D04-133C-4A62-8362-64E8EDB9CE40}" EventSourceName="WAS" /> <EventID Qualifiers="32768">5139</EventID> <Version>0</Version> <Level>3</Level> <Task>0</Task> <Opcode>0</Opcode> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2011-04-14T11:10:04.000Z" /> <EventRecordID>334493</EventRecordID> <Correlation /> <Execution ProcessID="0" ThreadID="0" /> <Channel>System</Channel> <Computer>WEBSRV64</Computer> <Security /> </System> <EventData> <Data Name="AppPoolID">SiteAppPool</Data> <Data Name="ProcessID">2060</Data> <Data Name="param3">0</Data> <Data Name="ProtocolID">http</Data> <Binary>7E000780</Binary> </EventData> </Event>

我们得到了5个,但都是不同的工人进程号。

之后,我们得到这个错误:

 Application pool 'SiteAppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool. 

我们完全不知道为什么这个错误发生,我们做了一对一的网站副本。 目前我们仍然在32位服务器上运行,但我们希望尽快迁移。 有没有人有一个线索,为什么我们得到这个错误?

可能是很多东西,但有一些东西跳到我的脑海里:

  • 旧网站是否为应用程序池使用了不同的ID,可能是本地计算机用户? 如果是这样,它可能是应用程序本身内部的东西,没有正确处理新的ID。
  • 新机器上是否安装了.Net Framework的正确版本?
  • 您是否使用“高级设置”视图逐点比较了新旧应用程序池?

如果您创build新的网站/应用程序池并接受默认设置,它是否仍然为新网站执行此操作?

这可能是您的网站中与x64不兼容的组件。 它可能是一个isapifilter或可能是一些托pipe代码或COM +调用。

如果一个http请求立即失败,那么它可能是一个isapifilter。 您可以通过禁用所有filter并testingtest.html页面来进行确认。 然后添加回来,直到它再次失败。

你有两个解决scheme:

  • 最简单:以32位模式运行您的应用程序池。 无论如何,这是一个很好的设置。 您可以从应用程序池高级属性(顶部选项之一)进行设置。 将其设置为应用程序池默认值,将来的应用程序池也将被设置。 在IIS7中,您可以利用x64的高内存,同时仍以32位模式运行应用程序池。
  • 或者,一旦你缩小了有问题的组件,从供应商那里得到一个更新。