2010-07-28 1 views
0

WCF 서비스에 Cassini 대신 로컬 IIS7을 사용하도록 Visual Studio 2010을 변경했습니다. Cassini에서 디버그 모드로 테스트 할 때 Redemption.dll을 인스턴스화하는 데 문제가 없습니다. 프로젝트 속성에서 Visual Studio를 사용하여 IIS7 가상 디렉터리를 사용하도록 전환하면 디버깅을 시작하고 코드를 단계적으로 실행하고 마지막으로 Redemption.dll을 다시 인스턴스화하려고하면이 오류가 발생합니다 ...IIS7은 등록 된 Cashini로 COM 개체를 찾을 수 없습니다. 무엇이 누락 될 수 있습니까?

구성 요소의 COM 클래스 팩터 리 검색 다음 오류로 인해 CLSID {741BEEFD-AEC0-4AFF-84AF-4F61D15F5526}가 실패했습니다. 80040154 클래스가 등록되지 않았습니다 (HRESULT 예외 : 0x80040154 (REGDB_E_CLASSNOTREG)).

내가 VS2010에서 참조를 만드는 중에 액세스하는 경로를 찾았습니다. 나는 실제로 등록을 취소하고 다시 등록함으로써 실제로 등록되었음을 확인했습니다. 그런 다음 문제없이 IIS7에서 Visual Studio를 실행하고 동일한 오류가 발생하여 다시 카시니에서 테스트했습니다. 그래서 나는 그것이 등록되어 있다고 확신합니다.

저는 AppPool을 AppPoolIdentity, MyOwnAdminAccount, LocalSystem 및 NetworkService의 기본값으로 실행했습니다. IIS7에서 디버깅 할 때 Redemption.dll COM 개체가 눈에 띄게 등록 된 것으로 보이는 이러한 변경 사항은 없습니다.

답변

1

이 코드는 32 비트로 실행되었는지 확인합니다 도와주세요 - 보너스로드 MAPI 인 - PROC이기 때문에 비트 수는 MAPI 시스템의 일치해야합니다. Redemption은 in-proc COM 라이브러리이기 때문에 호스트 응용 프로그램도 32 비트 여야합니다. Redemption의 64 비트 버전은 베타 버전이지만 Outlook 2010 64 비트는 64 비트 버전의 MAPI를 설치하는 유일한 방법입니다.

+0

COM + 서비스에 Redemption을 추가했습니다. 이것은 등록 된 것으로 COM 객체를 찾는 문제를 해결하는 것처럼 보였습니다. 그것이 32 비트 대 64 비트를 해결하는 것과 관련이 있는지 여부는 저에게 신비입니다. 나는 그것이 할 수 있다고 생각한다. 어떤 경우 에든 COM +에 Redemption.dll을 배치 한 후에 발행 된 문제가 해결되었습니다. – apolfj