我通过套接字传递用户定义的类。SendObject 代码如下。它可以在我的本地机器上运行,但是当我发布到 WebServer 时,它正在与我自己机器上的 App Server 进行通信,它失败了。
public bool SendObject(Object obj, ref string sErrMsg)
{
try
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf1 = new BinaryFormatter();
bf1.Serialize(ms, obj);
byte[] byArr = ms.ToArray();
int len = byArr.Length;
m_socClient.Send(byArr);
return true;
}
catch (Exception e)
{
sErrMsg = "SendObject Error: " + e.Message;
return false;
}
}
如果它是我的工具项目中的一个类,而另一个关于 UserData 的类只是不想知道,我可以做到这一点。令人沮丧!
哦。我认为这是因为 UserData 类里面有一个 DataSet 。有趣的是,我已经看到了这项工作,但是在 1 个请求之后它变得循环,我无法让它再次工作。
有谁知道这可能是为什么?我已经查看了比较 dll 以确保它们在 WebServer 和我的本地计算机上是相同的,并且它们看起来是这样的,因为我在 AssemblyInfo.cs 中打开了版本控制以进行仔细检查。
可能的原因是无效的流或序列化和反序列化之间的对象版本更改。
编辑:
好的,问题似乎出在大小上。如果我将它保持在 1024 字节以下(我在这里猜)它可以在 Web 服务器上运行,并且如果它里面有一个 DataSet 则不能。k 事实上,这太令人费解了,我使用 ds.GetXml 将 DataSet 转换为字符串( ) 这也导致它爆炸。:( 因此,在整个网络中,我的套接字似乎是错误的,并且不想读取数据。