Iis 7 XCOPY/将x86中的ASP.NET 3.5网站发布到64位服务器上
我有一个使用32位dll的ASP.NET“网站”。当我复制到64位服务器时,使用此32位dll的页面会引发异常。我已经为网站运行的应用程序池将“启用32位应用程序”设置为True,但这没有帮助 我还试图将目标平台设置为x86,但与Web应用程序不同,该网站没有选择 这是堆栈跟踪-Iis 7 XCOPY/将x86中的ASP.NET 3.5网站发布到64位服务器上,iis-7,Iis 7,我有一个使用32位dll的ASP.NET“网站”。当我复制到64位服务器时,使用此32位dll的页面会引发异常。我已经为网站运行的应用程序池将“启用32位应用程序”设置为True,但这没有帮助 我还试图将目标平台设置为x86,但与Web应用程序不同,该网站没有选择 这是堆栈跟踪- Event code: 3005 Event message: An unhandled exception has occurred. Event time: 7/13/2010 5:01:12 PM Even
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 7/13/2010 5:01:12 PM
Event time (UTC): 7/13/2010 9:01:12 PM
Event ID: 9611671ef6b845f39af6b26b89af85e3
Event sequence: 51
Event occurrence: 4
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/2/ROOT-1-129235271319338750
Trust level: Full
Application Virtual Path: /
Application Path: C:\Site\
Machine name: WWWTEST
Process information:
Process ID: 4020
Process name: w3wp.exe
Account name: IIS APPPOOL\WWWTEST AppPool
Exception information:
Exception type: COMException
Exception message: Retrieving the COM class factory for component with CLSID {58968145-CF05-4341-995F-2EE093F6ABA3} failed due to the following error: 80040154.
Request information:
Request URL: http://site/Downloads.aspx
Request path: /Downloads.aspx
User host address: 192.168.1.101
User:
Is authenticated: False
Authentication Type:
Thread account name: WWWTEST\Webtest
Thread information:
Thread ID: 4
Thread account name: WWWTEST\Webtest
Is impersonating: False
Stack trace: at Downloads.Button_Click(Object Sender, DataGridCommandEventArgs E) in C:\Site\Downloads.aspx.vb:line 1034
at System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
at System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
at System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
我在线搜索异常“检索CLSID为{58968145-CF05-4341-995F-2EE093F6ABA3}的组件的COM类工厂失败,原因是以下错误:80040154。”并在IIS7上启用了32位模式,但仍然没有成功
非常感谢您的帮助
**答复**
在用户的帮助下,我能够解决这个问题。以下是我所做的-
非常感谢你,凯文。非常感谢。您可能需要将运行应用程序的应用程序池设置为x86运行。这听起来好像COM组件没有在服务器上注册。您需要将组件(dsofile.dll)复制到服务器,然后运行
regsvr32.exe
进行注册:
regsvr32 dsofile.dll
您还需要确保网站运行的帐户具有对此文件或其包含文件夹的读取权限
可能还值得尝试构建您的项目,并将构建更改为目标x86而不是任何CPU,尽管我怀疑这是问题所在。这与在应用程序池上启用“启用32位应用程序”不同吗?@tempid-不,没有这样的设置。您做了正确的事情,将
启用32位应用程序设置为true。将引发什么异常?你能粘贴堆栈跟踪吗?Kev,我已经用堆栈跟踪更新了问题。有什么想法吗?这是第三方组件吗?如果是,那是什么。我猜有一个互操作程序集?是的,它是一个互操作程序集。它使用32位框架,dll包含一个32位COM对象@tempid-这是一个自主开发的COM组件吗?谁是供应商?我尝试在Web服务器上注册COM,但它错误地说“找到了模块,但未找到DllRegister服务器入口点”。无法将目标设置为x86,因为这是一个网站项目。还有其他想法吗?给你-regsvr32/i“c:\Interop.DSOFile.Dll”@tempid-请参阅更新的答案。您没有注册互操作文件。这只是一个托管的.NET包装器,可以插入COM基础结构。您还需要注册包含在dsofile.dll中的底层组件本身。在Kev的帮助下,我能够解决这个问题。以下是我所做的-1。下载这个文件-2。将内容解压缩到临时文件夹。将文件“Interop.DSOFile.dll”和“DSOFile.dll”复制到服务器上应用程序的bin目录。3.打开具有管理员权限的cmd提示符,并导航到bin目录。4.键入regsvr32 dsofile.dll 5。确保应用程序池设置为启用32位应用程序。6.谢谢你,凯文。我真的很感激。@tempid-为什么不用这些信息更新你的问题呢。把它钉在头上。如果其他用户遇到同样的问题,他们会更容易发现。