【问题标题】:C# DCOM event binding Unathorized ExecptionC# DCOM 事件绑定未经授权的异常
【发布时间】: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


    【解决方案1】:

    我遇到了同样的问题。 对我来说,问题是我在同一台设备上运行了一个 AD,并且不得不在注册表中禁用环回检查。我认为其他解决方案可能会更好,但对我来说,注册表黑客会做。

    【讨论】:

    • 它并没有为我解决这个问题,如果这是问题所在,那就太奇怪了。鉴于这是失败的非本地案例。不过还是谢谢你。
    • 您是否启动了服务器并在本地(管理员)帐户下运行 dcom 组件?交互式用户确实为我工作。
    • jep,实际上每个人都是管理员,甚至是匿名用户和访客。不是很安全,但我只是真的希望它能够正常工作。
    猜你喜欢
    • 2012-02-22
    • 2019-03-11
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2020-05-30
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多