최근에 구현하기가 쉽지 않은 문제가 발생했습니다. COM 개체가 이미 Windows 7 컴퓨터에 설치되어 있습니다. 이 COM 개체 주위에 webservice 또는 WCF 서비스를 작성하려고합니다. 불행히도, 내가 뭘하려고해도 아무 쓸모가없는 것 같습니다.Interop : ASMX 웹 서비스 또는 WCF 서비스에서 COM 사용 - C#
Visual Studio 2008과 2010이 모두 설치되어 있습니다. VS IDE를 사용하여 COM에 대한 참조를 만들었으며 예상대로 VS는 자동으로 COM 멤버에 액세스하는 데 필요한 interop DLL을 만들었습니다.
winforms 응용 프로그램에서 이것을 시도하면 모든 것이 잘 작동하지만 서비스에서 사용하면 운이 없어진 것입니다.
코드는 supersimple이며 다음과 같습니다
LCDirect_WebLogin.CoClass_n_ap_com com = (LCDirect_WebLogin.CoClass_n_ap_com)obj.Unwrap();
object value = null;
string name = "";
com.getsysteminfo(name, ref value);
if (value != null)
return value.ToString();
그래서,의 WinForm 응용 프로그램에서 동일한 코드는 잘 작동하지만, 아래는 충돌 IIS.
몇 가지 추가 정보 : 마지막으로 Windows 2003 Server에 배포해야합니다. COM DLL은 PowerBuilder 런타임에 종속됩니다. 내 system32 및 webservice에 대한 bin 폴더의 PB 런타임을 복사했습니다.
필자는 종속성 문제가 아니라 관리되지 않는 코드를 호출하는 보안 문제라고 생각합니다.
또한 앱 풀을 사용하고 실행을 위해 관리자 계정을 사용하여보다 proviled 된 계정에서 웹 서비스를 실행 해 보았습니다. 같은 문제.
아이디어가 있으십니까? 감사합니다. .
IIS가 서로 다른 보안 설정의 전체 스택을 가지고 - 그것은 적극적으로로드에서 COM 바이너리 차단 될 수 있습니다 작업자 프로세스. 어쩌면 http://serverfault.com/을 시도해보십시오. –