【发布时间】:2016-12-28 15:46:53
【问题描述】:
对于我正在进行的项目,我必须与第三方 DCOM 库进行交互。我从 COM 互操作开始,这在本地工作得很好,然后我切换到 DCOM,现在在尝试将事件处理程序绑定到暴露的事件时,我不断收到未经授权的访问异常 (0x80070005)。以下是我在代码中所做的总结:
public void connect(string server)
{
object dcomObj = null;
var guidB = Guid.Parse("c8c1f57f-0d7c-40b3-b17c-2eac12512006");
var typ = Type.GetTypeFromCLSID(guidB, server, true);
object[] url = { new UrlAttribute(server) };
dcomObj = Activator.CreateInstance(typ, null, url);
user = (RemoteObjectInterface)dcomObj ;
user.getState(); //works fine locally and remotely
user.stateChange += this.User_StateChange; //only works locally
}
我尝试设置可以在网络上找到的所有权限,但没有成功。有没有人知道为什么只有事件绑定失败?
RemoteObjectInterface 继承自 IRemoteObjectEvents 和 IRemoteObject。这些接口来自我导入原始dll时为我生成的interop ms。
服务器是带有桥接网络适配器的虚拟机中的 windows server 2003 VM。在服务器上,每个人都是管理员(包括访客),限制设置为完全访问,默认设置为完全访问。我正在使用 Visual Studio 2015 的 Windows 10 机器在 c# .net 4.5.2 上构建和运行我的代码。
SDK自带的示例应用程序在我远程使用时也失败了,服务器注册了用户但是示例应用程序从来没有意识到它登录成功,我怀疑这个行为与事件失败有关绑定。
TL;DR 我可以获取和使用远程对象,但是当我尝试添加事件处理程序时,我得到一个未经授权的异常 (0x80070005),为什么在事件绑定上会发生这种情况?我该如何解决?
【问题讨论】:
标签: c# events dcom .net-remoting