序言:
我们正在开发一个REST接口,从嵌入式控制器获取实时数据。有一个UI与嵌入式控制器通信,并有一个COM接口,提供对相关数据的访问。 REST接口通过COM连接以获取必要的数据。这一切都适用于IIS Express,但不适用于IIS
Guid myGUID = new Guid( "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" );
Object ppunk;
nResult = GetActiveObject( ref myGUID, IntPtr.Zero, out ppunk );
IIS的结果是0x800401E3(MK_E_UNAVAILABLE)。
我知道IIS正在会话0中运行,并且UI正在Session#中运行(通常为1)。 IIS Express在会话1中使用UI运行,因此一切顺利。我认为由于会话号不同,GetActiveObject()不会在UI已注册其COM接口的运行对象表(ROT)上运行,因此我的MK_E_UNAVAILABLE问题。
那么,是否有办法绕过上述情况? 在用户会话中从IIS启动UI不是一种选择。 UI应该已经在运行,并且由于它连接到单个嵌入式控制器,因此多个实例不会很好 从连接到UI的IIS启动用户会话中的进程似乎是可能的,但是不希望添加另一级别的间接。
Sage对解决方案之路的建议将不胜感激。