转:remoting使用手记

转:http://www.21tx.com/dev/2005/01/01/11233.html

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

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值