XCOPY /将x86中的ASP.NET 3.5网站发布到64位服务器上

时间:2010-07-13 19:42:54

标签: iis-7

我有一个使用32位dll的ASP.NET“网站”。当我对我们的64位服务器进行XCOPY时,使用这个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 
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位模式,但仍然没有运气。

非常感谢任何帮助。

**答案** 我能够在用户Kev的帮助下解决此问题。这就是我做的 -

  1. here
  2. 下载Microsoft开发人员支持OLE文件属性读取器2.1示例(KB 224351)
  3. 使用WinZip / 7-zip等将内容解压缩到临时文件夹。不要运行安装程序。将文件“Interop.DSOFile.dll”和“dsofile.dll”从提取的位置复制到服务器上应用程序的bin目录。
  4. 使用管理员权限打开cmd提示符并导航到服务器上的bin目录
  5. 输入“regsvr32 dsofile.dll”
  6. 确保将App Pool设置为启用32位应用程序。
  7. 重新启动IIS
  8. 非常感谢,Kev。我真的很感激。

2 个答案:

答案 0 :(得分:2)

这听起来好像COM组件未在服务器上注册。您需要将组件(dsofile.dll)复制到服务器并运行regsvr32.exe进行注册:

  

regsvr32 dsofile.dll

您还需要确保网站运行的帐户具有对此文件或其包含文件夹的读取权限。

也许值得尝试构建项目并将构建更改为目标x86而不是任何CPU,但我怀疑这是问题。

答案 1 :(得分:-1)

您可能需要将应用程序运行的应用程序池设置为以x86运行。