在使用C#的应用程序域的时候,碰到这么一个异常:

System.Runtime.Remoting.RemotingException: Object ‘/76e7cd41_2cd2_4e89_9c03_fae752ec4d59/zb_uualy_cm6kwizjlentfdl_3.rem’ has been disconnected or does not exist at the server.

当你使用AppDomain时,会创建一个Proxy继承自MarshalByRefObject,来跨应用程序域传值。然后在主AppDomain中,使用一个属性或者Dictionary来保存Proxy的引用,但实际的对象是在子AppDomain中,你的主AppDomain中只是保存了一个远程代理。

这时,远程对象的生命周期并不是应用了.NET标准GC规则,而是用了Remoting Lease and Sponsor Mechanism(不知道对应的专业翻译汉语名词)。这意味着,除非我们显式管理子AppDomain的生命周期,否则它会被GC回收并消失,即便主AppDomain中仍然维护着远程代理的引用。当你再次使用远程代理访问子AppDomain时,就抛出了上面的异常。。\(╯-╰)/ 。

(上面异常中,Object的名字是在你 AppDomain.CreateInstanceAndUnwrap 时,随机生成的)

如果你希望能长期使用子AppDomain,不让它过期,需要重写Proxy类的 InitializeLifetimeService ,返回NULL即可。

原文:

http://blogs.microsoft.co.il/sasha/2008/07/19/appdomains-and-remoting-life-time-service/

thx Sasha Goldshtein

C#使用AppDomain时的异常分析:Object ‘XXXX.rem’ has been disconnected or does not exist at the server.的更多相关文章

  1. nohup 程序在后台运营 避免 xshell 卡死 通过 nohup.out分析调取系统命令时的异常分析

    nohup  程序在后台运营 避免 xshell  卡死 [root@admin1 after_fc_distributed]# nohup /root/anaconda3/bin/python da ...

  2. 解决hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted object from associa

    今天在做项目时,需要删除一个对象,由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了 deleted object would be re-saved by cascade ...

  3. vs2010 rdlc .net4.0 卸载 Appdomain 时出错。 (异常来自 HRESULT:0x80131015) 解决办法

    网上一看Appdomain出错,绝大部分都是说控件加载错误.经测试在.net 4.0环境下 rdlc报表很容易发生卸载 Appdomain 时出错. (异常来自 HRESULT:0x80131015) ...

  4. Linux Kernel Oops异常分析

    1.PowerPC小系统内核异常分析 1.1  异常打印 Unable to handle kernel paging request for data at address 0x36fef31eFa ...

  5. Android异常分析(转)

    关于异常 异常? 异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象.比如:android系统常见异常现象有应用无响应. ...

  6. 计算机是如何计算的、运行时栈帧分析(神奇i++续)

    关于i++的疑问 通过JVM javap -c 查看字节码执行步骤了解了i++之后,衍生了一个问题: int num1=50; num1++*2执行的是imul(将栈顶两int类型数相乘,结果入栈), ...

  7. 解决hibernate删除时的异常

    由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了 deleted object would be re-saved by cascade (remove deleted ...

  8. MySQL 外键异常分析

    外键约束异常现象 如下测例中,没有违反引用约束的插入失败. create database `a-b`; use `a-b`; SET FOREIGN_KEY_CHECKS=0; create tab ...

  9. java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码

    java.net.SocketException:Software caused connection abort: recv failed 异常分析 分类: 很多的技术 2012-01-04 12: ...

随机推荐

  1. MySQL之内连接、左连接和右连接

    数据表内数据如下: books表:                                                                                    ...

  2. python阅读目录

    一.python基础--列表.元祖.字典.集合 二.1231 三.12121

  3. 田螺便利店—filezilla实现Linux和windows通信(二)

    filezilla,FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个 ...

  4. css3实现小程序的动画

    <view class="biground" >     <block wx:for="{{Namelist}}" wx:key=" ...

  5. Calling Circles(UVa 247)(Floyd 算法)

    用Floyd算法求出传递闭包,然后用dfs求出每条连通分量.注意其中用到的几个小技巧: #include<cstdio> #include<iostream> #include ...

  6. LeetCode 104. Maximum Depth of Binary Tree C++ 解题报告

    104. Maximum Depth of Binary Tree -- Easy 方法 使用递归 /** * Definition for a binary tree node. * struct ...

  7. SDL中 so库的使用

    用到的项目:Tocy-Android-SDLv2 JAVA层:只有一个 SDLActivity.java 路径\Android-SDLv2\src\org\libsdl\app 项目简单分析: 默认在 ...

  8. 20164301 Exp4 恶意代码分析

    Exp4 恶意代码分析 实验目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行.  2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinte ...

  9. Linux第十一节课学习笔记

    区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换. RUNTIME模式:当前生效,重启失效:PERM ...

  10. Spring框架基础解析

    Spring是一个轻量级的.非侵入式的容器框架:对Bean对象的生命周期进行管理. Spring框架的核心:IOC(控制反转).DI(依赖注入).AOP(面向切面编程). (1) IOC:控制反转. ...