2012-01-18 2 views
51

COM + 도메인 파티션을 만든 다음 Windows 2008 서버 컴퓨터에 매핑하고 COM + 응용 프로그램을 가져 왔습니다.다른 파티션에서 COM + 개체 활성화

내가 원격으로 서버에 특정 파티션에서 개체 활성화하기 위해 다음과 같은 C# 코드를 사용하여 시도

:

//partition guid 
Guid guidMyPartition = new Guid("41E90F3E-56C1-4633-81C3-6E8BAC8BDD70"); 
//parition moniker 
string uri= "partition:{" + guidMyPartition + "}/new:MyObject"; 
Type t = Type.GetTypeFromProgID("MyObject", "MyServer"); 
MyObject obj = (MyObject)Activator.GetObject(t, uri); 

를 그러나 나는이 예외 얻을 :

가 연결하는 채널 싱크를 만들 수 없습니다를 URL '파티션 : {41e90f3e-56c1-4633-81c3-6e8bac8bdd70}/new : MyObject'. 적절한 채널이 등록되지 않은 것 같습니다.

아무도 이러한 정품 인증을 수행 할 수있는 방법을 알고 있습니까?

+1

당신이 COM + 구성 요소 (의미없는 .NET에서) 기본 활성화에 노력하고, 아니면 우리가 CLR 용으로 작성된 ServicedComponent에서 (의 얘기 : 명령 줄을 사용하여이 작업을 수행 할 수 있습니다 COM + 인프라 사용)? – gsscoder

+0

당신이 세부 사항을 줄 때까지. 이 다른 질문을 참조 할 수 있습니다 : http://stackoverflow.com/questions/12637878/how-can-i-instantiate-a-com-class-interface-generically 및 Marshal.BindToMoniker MSDN doc (// msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.bindtomoniker.aspx). – gsscoder

+1

CLR ServicedComponent – Solid

답변

1
  1. Com이 공개되고 표시되는지 확인하십시오. 이렇게하려면 COM 클래스에이 태그를 추가 :

    [ClassInterface(ClassInterfaceType.AutoDual)] 
    [Guid("41E90F3E-56C1-4633-81C3-6E8BAC8BDD70")] 
    [ProgId("..........")] 
    [ComVisible(true)] 
    public class MyCom 
    { 
    
  2. 이 COM이 등록되어 있는지 확인합니다. 게시 된 경우에도

    C:\WINDOWS\Microsoft.Net\Framework\v4.0.30319\regasm "C:\.......\xxx.dll"