我将我公司的网站从Windows 2003×86服务器迁移到运行IIS 7.5的Windows 2008×64。
我得到的问题是,所有在旧服务器上运行正常的DLL,现在只要被调用就会出错。 我所得到的是一个通用的错误,如:
服务器对象错误“ASP 0177:800401f3”
Server.CreateObject失败
- 在Windows 2003 x64上的IIS 6中主机ASP.NET 4.0
- 你在哪里改变IIS应用程序池自动回收的速度?
- 401 – 未经授权:使用App Pool Identity在IIS 7.5中运行的Web应用程序拒绝访问错误
- 在AppPoolIdentity上运行一段时间后,IIS 7.5托pipe的应用程序失败
- 每个应用程序池使用多个线程会导致IIS返回503,并停止响应
/folder/scriptname.asp,第24行
800401f3
错误是:
'23 lines of comments set A0SQL_DATA = server.createobject("olddllname.Data") 'the rest of the script
我已经在设置为32位模式的应用程序池中运行该网站。 但是,我得到了错误。
有没有人经历过这个? 我很害怕,因为我查阅的所有信息都说我需要做的就是设置应用程序池在32位模式下运行。 我做到了,而且还没有工作。 我还能检查什么?
从这里如果发现这个:
这个错误的意思是“无效的类string” – 换句话说,对CreateObject的调用失败,因为OLE子系统找不到名称对象。 原因包括:
毕竟,你真的没有在服务器上运行regsvr32。
你运行regsvr32,但它报告了一个错误。
有人修改了部分registry的安全性,使得OLE子系统无法读取全部或部分的HKEY_CLASSES_ROOT树。
您尝试创build的对象的名称被拼写错误或不正确。
确定是否是权限问题
另外,由于您正在从03迁移到08,您是否安装了IISangular色中find的IIS 6pipe理兼容性添加项? 我不是IIS或ASP的专家,所以我希望这有助于。
可能发生的情况是,您的DLL是一个32位的DLL,并且应用程序池以64位运行。 你将需要做的是将应用程序运行的应用程序池改为32位应用程序池。 请参阅enable32BitAppOnWin64: http ://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add
您可以在UI中通过selectAppPools列表中的Application Pool(selectTree节点)并使用Advanced Settings来启用它。