我正在通過套接字傳遞用戶定義的類。 SendObject代碼如下。它在我的本地機器上工作,但是當我發佈到WebServer時,它隨後在我自己的機器上與App Server進行通信,但它失敗。二進制流'NN'不包含有效的BinaryHeader
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的情況下使用。事實上,這非常令人費解,我使用ds.GetXml將DataSet轉換爲字符串),這也會導致它爆炸。 :(如此看來,在網絡上的東西與我的插座是錯誤的,不希望在數據讀取