2010-08-26 127 views
2

我們正在將我們的應用程序從Windows Server 2003遷移到Windows Server 2008 R2。我正面臨着一些遷移問題。將COM +應用程序從Windows 2003移植到Windows 2008服務器的問題

我在Windows Server 2008 R2中部署了許多COM +組件(32位)和DCOM組件(32位)。這些COM +和DCOM組件是VC++代碼。

我有一個.net 3.5服務32位部署在同一個服務器,它調用上面提到的COM +組件。

每當我嘗試啓動服務時,它都不會啓動並在事件日誌中引發多個錯誤。我們得到的主要錯誤是遠程過程調用失敗錯誤**(**遠程過程調用失敗(異常來自HRESULT:0x800706BE))****根據調試過程中的觀察,COM對象被創建,但是當一些方法被調用時,拋出遠程過程異常。

在Win 2003 Server Box中也可以正常工作。

錯誤

1錯誤:

Faulting application name: dllhost.exe, version: 6.1.7600.16385, time stamp: 0x4a5bc6b7

Faulting module name: KERNELBASE.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdbdf

Exception code: 0xe06d7363

Fault offset: 0x0000b727

Faulting process id: 0x8ac

Faulting application start time: 0x01cb437094216ea7

Faulting application path: C:\Windows\SysWOW64\dllhost.exe

Faulting module path: C:\Windows\syswow64\KERNELBASE.dll

Report Id: d25f6a31-af63-11df-8252-0050568e251b

第二個錯誤:

The system has called a custom component and that component has failed and generated an exception. This indicates a problem with the custom component. Notify the developer of this component that a failure has occurred and provide them with the information below.

Server Application ID: {727318BC-A725-4ED6-8DDD-9DE80262D3CA}

Server Application Instance ID:

{739972C1-74DA-4169-A093-32AAAA965EC9}

Server Application Name:

The serious nature of this error has caused the process to terminate.

Exception: E06D7363

第三錯誤:

Fault bucket , type 0

Event Name: APPCRASH

Response: Not available

Cab Id: 0

Problem signature:

P1: dllhost.exe

P2: 6.1.7600.16385

P3: 4a5bc6b7

P4: KERNELBASE.dll

P5: 6.1.7600.16385

P6: 4a5bdbdf

P7: e06d7363

P8: 0000b727

P9:

P10:

Attached files:

These files may be available here:

C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c

Analysis symbol:

Rechecking for solution: 0

Report Id: d25f6a31-af63-11df-8252-0050568e251b

第四錯誤:

Fault bucket , type 0

Event Name: APPCRASH

Response: Not available

Cab Id: 0

Problem signature:

P1: dllhost.exe

P2: 6.1.7600.16385

P3: 4a5bc6b7

P4: KERNELBASE.dll

P5: 6.1.7600.16385

P6: 4a5bdbdf

P7: e06d7363

P8: 0000b727

P9:

P10:

Attached files:

These files may be available here:

C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c

Analysis symbol:

Rechecking for solution: 0

Report Id: d25f6a31-af63-11df-8252-0050568e251b

Report Status: 0

5日錯誤:

Service cannot be started. System.Runtime.InteropServices.COMException (0x800706BE): The remote procedure call failed. (Exception from HRESULT: 0x800706BE)

我們已檢查了基於以下分析,

1權限問題 - 如果選中每個人,authernticated用戶,IWAM_服務器和IUSR_SERVERNAME有充分控制。在論壇上看到他們應該在某些系統文件夾上擁有NTFS讀取/執行權限。不知道如何檢查這個。

2. DLL地獄問題 - 檢查註冊和一切似乎很好。

3.進程'位'問題 - 檢查註冊表和所有條目都在WoW6432下,所有應用程序組件都是32位。沒有對64位組件的進程調用。也用於32個應用程序的COM。

4.防火牆問題 - 此服務與COM組件在同一臺計算機上。我們是否應該更改與MSTDC安全相關的一些設置,高級防火牆配置,如啓用COM +入站?我們不確定,因爲我們是第一次配置服務器。

  • 啓用 '運行32位應用程序' 複選框
  • 但沒有上述是幫助。

    此外,我們試圖複製與示例組件的問題。我們已經創建了一個.NET組件並將其部署在COM +中。試圖通過VB腳本和C#控制檯應用程序訪問它,它在Windows 2003中工作正常。同樣的,在Windows 2008 Server中不起作用。我們沒有得到RPC錯誤,但以下,

    vb script error :800a01ad activex component cant create object

    .net client invoking com+ : CLASS NOT REGISTERED : HRESULT 0x80040154 (REGDB_E_CLASSNOTREG)

    經過分析發現,這些問題可能是由於權限問題,DLL地獄或過程「位數」的問題。

    如果有人能夠幫助我們解決這個問題,那將會很棒。

    感謝, 維傑

    回答

    2

    這都是一樣崩潰的原因。你的組件拋出了一個C++異常,並沒有被catch語句捕獲。使用調試器來找出它拋出異常的原因。

    +0

    +1。你爲什麼崩潰可能是正確的,但不是如何解決它。你看,C++代碼不能被限制拋出異常 - 每次偶爾發生錯誤,並拋出異常。如果他專注於調查這一案件,他只是浪費時間。真正的解決方案是不允許異常通過COM邊界傳播。具體來說,每個可以通過COM調用的函數都應該捕獲所有可能的**異常,並將它們轉化爲HRESULT和IErrorInfo。 – sharptooth 2010-08-27 05:20:38

    相關問題