programing

서버 실행에 실패했습니다(HRESULT: 0x80080005(CO_E_SERVER_EXEC_).실패)

mbctv 2023. 4. 21. 21:20
반응형

서버 실행에 실패했습니다(HRESULT: 0x80080005(CO_E_SERVER_EXEC_).실패)

측에서 ..xls 파일에는 .xls를 사용합니다.Microsoft.Office.Interop.Excel.Workbook뭇매를 맞다

 workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

다음의 에러가 표시됩니다.

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
   at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
   at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
   at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at CALLING_METHOD_IN_MY_LIBRARY_HERE...

문제는 이 오류가 스테이징 서버에서만 발생한다는 것입니다.로컬 머신에서는 정상적으로 동작합니다.

스테이징 서버에서 시도한 것:

  1. **1) dcomcnfg open Component Services를 실행합니다.

2) 컴포넌트 서비스 ->"컴퓨터 ->"내 컴퓨터 ->" DCOM 설정"을 전개합니다.

3) "Microsoft Excel 어플리케이션"을 찾습니다.

4) [속성]대화상자를 여는 오른쪽

5) [보안]탭을 클릭.

6) "기동 및 액티베이션 권한, 설정 권한, 추가 권한 있음 - 관리자 사용자(이 사용자), 대화형 사용자 및 부팅 사용자에서 ID 실행

7) 부팅 및 활성화 권한 + 접근 권한 + 구성 권한 => 추가 IIS_IUSRS + 네트워크 서비스 (풀컨트롤 포함)**

2. 로컬 머신의 .xls 파일을 "Any CPU"에서 "x86"으로 변환하는 프로젝트의 빌드를 변경하여 라이브러리를 서버에 공개합니다.

누가 이 문제를 해결할 방법을 알아냈나요?저는 지금 이틀 동안 이 문제를 해결하기 위해 고심하고 있습니다.

DCOMCNFG.exe 사용.파일을 열고 컴포넌트 서비스 -> 컴퓨터 -> 내 컴퓨터 -> DCOM 구성 -> Microsoft Excel 응용 프로그램으로 이동합니다.

속성을 열고 ID 탭을 선택한 다음 대화형 사용자를 선택합니다.

해답은 다른 곳에서 찾았습니다.

다음 작업을 수행하면 문제가 해결되었습니다.

DCOMCNFG.exe 사용.파일을 열고 컴포넌트 서비스 -> 컴퓨터 -> 내 컴퓨터 -> DCOM 구성 -> Microsoft Excel 응용 프로그램으로 이동합니다.속성을 열고 ID 탭을 선택한 다음 대화형 사용자를 선택합니다.

하지만 - 문제는 몇 분마다 재발했다!

원인을 파악하려고 몇 시간 동안 노력한 결과, 서버에 수백 개의 WINWORD가 열려 있는 것을 알 수 있었습니다.EXE 프로세스로 인해 메모리 문제가 발생하여exception from hresult 0x80080005

음, 멍청하게도 인터오퍼레이션 애플리케이션을 닫는 코드를 쓰는 걸 깜빡했네요.그것을 고치고 나서, 에러는 없어졌습니다.

doc.Close(false);
Marshal.ReleaseComObject(doc);
word.Quit();
Marshal.ReleaseComObject(word);

이 문제에 대해 자세히 설명하는 이 문서를 찾았습니다.이것이 도움이 되는 경우는, 에러 「80080005 Server 실행 실패(HRESULT: 0x80080005 (CO_E_SERVER_EXEC)」가 표시됩니다.FAILURE))"는 다음과 같은 이유로 인해 발생할 수 있습니다.

  1. 머신의 CPU 부하가 높아 프로세스 시작까지 시간이 오래 걸리고 CoRegisterClassObjects()를 120초 이내에 실행할 수 없습니다.
  2. COM 서버가 올바른 클래스 ID에 등록되지 않았습니다.
  3. COM 서버가 현재 정지하고 있으며 CoCreateInstance와 COM 서버 정지부 사이에 레이스 조건이 있습니다.
  4. COM 서버의 기동 방법에 시큐러티상의 문제가 있습니다(이 페이지는 패스워드의 철자가 틀리거나 「Run As...」COM 서버의 「Login as Batch Job」특권이 없는 것 같습니다만, 어쨌든, 이 정보를 특정의 설정에 대해서 재검증하는 것을 추천합니다).

https://blogs.msdn.microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/

이 문제를 해결했습니다.컴포넌트 서비스/컴퓨터/DCOM 구성/Microsoft Word97 - 2003 Document Properties / General 탭 오른쪽 클릭

인증 수준 설정:없음.

수정 방법은 [파일]-> [옵션]-> [저장]에서 [자동복구]를 무효로 하고 나서, 자동검출된 모든 파일을 폐기하는 것입니다.근본 원인인 자동 복구 파일의 볼륨인 것 같습니다.

배경 나는 많은 열기/닫기/컴퓨팅 사이클을 순환한다.C# 앱이 정기적으로 워크북을 열지 못하고 다음 오류가 발생합니다.

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

앱은 이 오류를 반복하여 Excel에서 AutoRecovered 파일이 삭제될 때까지 이 상태를 유지합니다.

또 다른 증상이 있습니다.Excel 앱을 열려고 하면(기존 워크북이 아닌 새로운 워크북을 작성하려고 하면) CPU 사이클이 오래 걸립니다.최종적으로 파일이 열리고 왼쪽의 [복구된 파일]페인에 많은 파일이 표시됩니다.

I Close모든 파일이 파기됩니다.이 절차 후 Excel을 다시 여는 것은 거의 즉시입니다.앱은 지금부터 다시 정상적으로 동작합니다.

같은 문제가 해결되었습니다.서비스의 「데스크탑·인터랙션을 가능하게 한다」라고 하는 것으로, 해결했습니다.(로그온 탭의 Tomcat6w 구성 도구)

시작 -> 실행(Windows+R)

입력: dcomcnfg -32 ( Enter 키를 누릅니다) 컴포넌트 서비스를 엽니다.

컴포넌트 서비스, 컴퓨터, 내 컴퓨터, DCOM 구성 전개

「Microsoft Excel 애플리케이션」까지 스크롤 다운 합니다.

오른쪽 버튼을 클릭하여 속성을 선택하고 보안 탭으로 이동합니다.

액세스 권한 편집

[추가(Add)]을 클릭합니다.

<Computer_Name>/ 라고 입력합니다.IIS_IUSRS(또는 [Locations](로케이션)로 이동하여 컴퓨터명을 선택합니다.도메인을사용하고있는경우기본적으로도도메인은검색되지만IIS_IUSRS)

"로컬 액세스"에 대해 "허용" 체크박스가 켜져 있는지 확인합니다.

[확인]을 클릭하여 다시 [확인]을 클릭합니다(재기동 불필요).

Windows Update는 이 기능을 한 번에 리셋합니다.

스레드 추가를 시도합니다.스레드 등의 sleep 방법.workBook.open 및 workbook 후 2초간 sleep(2000)합니다.SaveAs는 2개의 메서드입니다.Excel 파일의 형식이 많은 경우 몇 초 더 연장해 보십시오.

언급URL : https://stackoverflow.com/questions/22062284/server-execution-failed-exception-from-hresult-0x80080005-co-e-server-exec-fa

반응형