`
taowen
  • 浏览: 193352 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

当Remoting遇见COM

阅读更多
谁动了我的assembly?
你有没有曾经把.NET的用对象变成过COM对象?你有没有用过.NET Remoting?那你有没有两者同时用呢?如果你有,可能你也遇过同一个问题。.NET抱怨说,找不到要序列化的Assembly。因为COM对象被执行的时候,其所处的位置是宿主的位置,而不是Assembly所在的位置了。由于Binary Formatter查询Assembly的一个小问题,导致了这个错误信息。在MSDN论坛上抄来如下代码,解决了问题:
        private static Assembly CurrentDomain_AssemblyResolve(object sender, 
 ResolveEventArgs args)
        {
            Assembly ayResult = null;
            string sShortAssemblyName = args.Name.Split(',')[0];
            Assembly[] ayAssemblies = AppDomain.CurrentDomain.GetAssemblies();
            foreach (Assembly ayAssembly in ayAssemblies)
            {
                if (sShortAssemblyName == ayAssembly.FullName.Split(',')[0])
                {
                    ayResult = ayAssembly;
                    break;
                }
            }
            return ayResult;
        }

把这段代码注册到Current Domain的AssemblyResolve事件上。注册的最佳时机是静态构造函数:
static YourClass()
{
  AppDomain.CurrentDomain.AssemblyResolve += 
new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}

希望上天保佑我们的奶酪不会再被乱动了。
分享到:
评论

相关推荐

    .NET Remoting学习笔记

    ### .NET Remoting 学习笔记 #### 一、概念 .NET Remoting 是一种用于分布式对象通信的技术,它允许在不同的应用程序域之间进行对象交互。简单来说,它是一种升级版的 DCOM(分布式组件对象模式),针对 .NET 平台...

    C# remoting 聊天室

    C# Remoting是一种在.NET Framework 2.0中实现分布式应用程序的技术,它允许对象在不同的应用程序域(AppDomains)之间进行交互,甚至可以跨越网络。这个"聊天室"项目是利用C# Remoting来创建一个客户端-服务器架构...

    remoting学习

    Remoting技术是.NET框架中的一种远程通信机制,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至是跨越网络。这项技术对于构建分布式应用程序、实现服务器组件的透明调用非常有帮助。在这个"remoting...

    C# Remoting 断网事件处理+聊天系统

    当网络连接中断时,需要有机制来检测这种情况并采取适当的措施。这通常通过监听网络连接状态的变化来实现。例如,可以使用System.Net.NetworkInformation命名空间中的类,如NetworkChange或NetworkInterface,来注册...

    使用Remoting编写聊天程序

    Remoting是.NET Framework提供的一种远程通信技术,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至跨越网络。这个“使用Remoting编写聊天程序”的主题,将深入讲解如何利用Remoting构建一个简单的...

    Remoting TCP双向通信

    Remoting TCP双向通信是一种在分布式系统中实现高效、可靠数据交换的技术。在.NET框架中,Remoting提供了一种跨进程甚至跨计算机的通信机制,允许对象在不同的应用程序域(AppDomain)之间透明地调用方法。TCP...

    c#remoting简单例子

    C# Remoting是.NET Framework提供的一种机制,它允许在不同应用程序域(AppDomains)之间进行对象的透明通信,甚至跨越不同的进程或机器。这个“c# remoting简单例子”旨在帮助初学者理解Remoting的基本概念和工作...

    Remoting双向通信v1.0

    Remoting双向通信是一种在.NET Framework中实现客户端与服务器之间高效、灵活的数据交换技术。这个"Remoting双向通信v1.0"可能是一个实现双向通信的软件包或框架,旨在简化远程对象调用的过程,使应用程序能够实时地...

    remoting服务

    Remoting服务是.NET框架中的一种高级通信机制,它允许对象在不同的进程甚至不同的计算机之间进行交互,仿佛它们是在同一环境中。这个技术的核心理念是透明性,即开发者无需关心对象的实际位置,只需像调用本地对象...

    C# .Net Remoting 示例源码 Remoting工厂模式较为安全的Remoting解决方案

    C# .Net Remoting 两个简单示例,一个为普通的,一个为工厂模式的,更为安全一点.简单范例却是打好了一个框架,想要做东西,扩展就可以了. 使用说明和运行截图:http://www.our-code.com/news/2010105/n4920152.html 关于2...

    用Remoting分布式处理方式

    .NET Remoting是微软.NET框架提供的一种技术,用于在不同的应用程序域(AppDomain)之间进行通信,无论是同一台机器上的还是跨网络的。这种技术在分布式系统开发中扮演着重要角色,使得不同进程甚至不同计算机之间的...

    VB.NET Remoting实例

    VB.NET Remoting是微软.NET Framework中的一个重要特性,它允许开发者创建可以跨进程甚至跨网络通信的对象。这个技术的核心思想是使对象能够在不同的应用程序域(AppDomain)之间共享和交互,从而打破了传统对象只能...

    Remoting事件(服务端广播改进).

    6. **容错和恢复机制**:当客户端断线或者出现故障时,服务端需要有机制来处理这种情况,比如重新发送事件或通知新的订阅者。 在实际应用中,服务端广播改进对于构建大型分布式系统至关重要。例如,在实时系统中,...

    VB.NET Remoting 技术手册

    VB.NET Remoting是.NET Framework提供的一种强大的分布式计算技术,它允许对象在不同的应用程序域(AppDomain)之间进行通信,甚至可以跨越网络。本手册将深入探讨这一技术,帮助开发者理解和应用VB.NET Remoting来...

    remoting技术

    本系列文章将简单介绍Remoting的一些基本概念,包括 应用程序域、Remoting构架、传值封送(Marshal by value)、传引用封送(Marshal by reference)、Remoting的基本操作、分离服务程序元信息和实现、在Windows Service...

    vb.net remoting编程

    VB.NET Remoting是.NET框架中的一种核心技术,它允许在不同应用程序域(AppDomain)之间进行对象间的通信,甚至是跨越网络的通信。这个技术为分布式应用提供了强大的基础,使得开发者能够构建可扩展、高性能且安全的...

    C#remoting入门示例

    **C# Remoting 入门示例** C# Remoting是.NET Framework中提供的一种技术,它允许对象在不同的应用程序域(AppDomain)之间进行通信,甚至可以跨越不同的进程或网络。这种技术对于分布式系统和多层应用开发尤其有用...

Global site tag (gtag.js) - Google Analytics