Web Development2014.05.22 18:44




잘 작동하던 COM+ 컴포넌트가 작동을 하지 않을 때 참으로 난감하다.

처음에는

'System.InvalidCastException' 형식의 예외가 System.EnterpriseServices.dll에서 발생했지만 사용자 코드에서 처리되지 않았습니다.

추가 정보: CoCreateInstance에서 예기치 않은 형식을 반환했습니다. com.xxx.a이(가) 필요한데 com.xxx.b이(가) 반환되었습니다.

라는 오류를 뱉어 낸다.

하루 종일 고민하다가 소스는 그대로 두고 새로운 프로젝트를 만들어 등록해보았다. 이때,

프로젝트 > 속성 > 응용프로그램 섹션 > 어셈블리 정보 에서 어셈블리 정보를 노출할 수 있도록 클릭하고

또 하나 뱉어내는 오류인

어셈블리에 잘못된 ServicedComponent 파생 클래스가 있습니다.
클래스는 public이고 abstract가 아니어야 하며, public 기본 생성자를 사용하고 다른 모든 ComVisibility 요구 사항에 맞아야 합니다.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\ 에 있는 캐시된 컨텐츠도 삭제해야 겠죠.

그래도 안되는 경우는 한번 더 시도해볼만 한것은 어셈블리의 물리적 이름을 바꾸는 것 입니다.

예를 들면 com.xxx.dll 이라고 하면 com.xxx.1.dll 로 바꾸면 완전히 새로운 모듈로 인식하여 COM+에 등록이 되는 군요.

최종적으로 이것이 제일 적당한 방법인 듯 합니다.

드디어 등록이 되는 군요.

 

신고




Posted by 금붕어70