2012-01-18 15 views
51

Utworzono partycję domeny COM +, a następnie zmapowano ją na maszynę z systemem Windows 2008 i zaimportowano do niej aplikację COM +.Aktywacja obiektu COM + w innej partycji

Próbowałem za pomocą następującego kodu C#, aby aktywować obiekt z tej konkretnej partycji na serwerze zdalnie:

//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); 

Ale otrzymuję ten wyjątek:

nie można utworzyć zlew kanału, aby połączyć się Partycja URL: {41e90f3e-56c1-4633-81c3-6e8bac8bdd70}/new: MyObject '. Odpowiedni kanał prawdopodobnie nie został zarejestrowany.

Czy ktoś wie, w jaki sposób można dokonać takiej aktywacji?

+1

starasz się aktywacji natywnego (w sensie nie .NET) składnika COM + lub mówimy o ServicedComponent (napisany dla CLR nawet jeśli opublikowana z wykorzystaniem infrastruktury COM +)? – gsscoder

+0

Dopóki nie podasz tego szczegółu. Możesz odnieść się do tego innego pytania: http://stackoverflow.com/questions/12637878/how-can-i-instantiate-a-com-class-interface-generically oraz do Marshal.BindToMoniker MSDN doc (http: // msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.bindtomoniker.aspx). – gsscoder

+1

CLR ServicedComponent – Solid

Odpowiedz

1
  1. Upewnij się, że Twój komunikat jest jawny i widoczny. Aby to zrobić, należy dodać te tagi do klasy Com:

    [ClassInterface(ClassInterfaceType.AutoDual)] 
    [Guid("41E90F3E-56C1-4633-81C3-6E8BAC8BDD70")] 
    [ProgId("..........")] 
    [ComVisible(true)] 
    public class MyCom 
    { 
    
  2. Upewnij się, że COM został zarejestrowany. Można to zrobić za pomocą wiersza poleceń:

    C:\WINDOWS\Microsoft.Net\Framework\v4.0.30319\regasm "C:\.......\xxx.dll" 
    
Powiązane problemy