• λ我爱Aspx >> Asp.Net >> remoting使用手记
  • remoting使用手记

  • :aspxer  Դ:internet  :2007-5-15 20:46:04  ؼ:
  • 最近在尝试使用Remoting进行分布式应用开发,出现一些小错误,让我走了不少的弯路,现记录如下。

    1、 发现服务器激活对象支持不带参数的构造函数,所以改为客户端激活对象的方式;

    2、客户端激活对象由于是知名对象,可以采用http://localhost/*.soap?wsdl的方式查看远程对象是否已经配置,可是客户端激活对象不支持这种方式查看;

    3、不知是调用的远程remoting对象还是本地对象,通过如下代码检查对象是否是代理对象:

    if (RemotingServices.IsTransparentProxy(obj))

    {

    Console.WriteLine("transparent proxy");

    RealProxy proxy = RemotingServices.GetRealProxy(obj);

    Console.WriteLine(proxy.ToString());

    }

    4、序列化对象同时标明Serializable属性和从System.MarshalByRefObject继承,出现错误;

    5、客户端组件和远程组件(通过IIS承载,位于站点的bin目录下)的版本不一致,出现错误;

    6、在传递序列化对象时,出现“由于安全限制,无法访问对象”错误,我一直在查找是否权限的问题;为了判断传递的对象是否可以序列化,使用如下代码检验,发现本地序列化组件没有问题;

    //反序列化对象

    public static Object DeSer()

    {

    object info;

    IFormatter formatter = new BinaryFormatter();

    Stream stream = new FileStream("sam.dat",

    FileMode.Open , FileAccess.Read , FileShare.None);

    info = formatter.Deserialize(stream);

    stream.Close();

    return info;

    }

    //序列化对象

    public static void Ser(Object info)

    {

    IFormatter formatter = new BinaryFormatter();

    Stream stream = new FileStream("sam.dat",

    FileMode.Create , FileAccess.Write , FileShare.None);

    formatter.Serialize(stream,info);

    stream.Close();

    }

    7、对于错误“由于安全限制,无法访问对象”,最终发现是由于序列化对象的组件添加了强名,引起的错误。去掉强名就不会出现这个错误。这个问题困扰我两天。

    上一篇: 微软 .NET Remoting体系结构评估

    下一篇: 解析.Net框架下的序列化机制

    Ҷƪл˵?
  • һƪ微软 .NET Remoting体系结构评估
    һƪ[Remoting]当client不复存在而RemoteObject并不知道时的处理办法