我想從客戶端發送一個字節[]到一個Web服務。該數組由一個序列化的XML文件組成。發送到Web服務的字節[]的大小問題?
我的測試場景工作(使用非常小的字節[])。下面是代碼:
FormsService.FormsServiceClient client = new FormsService.FormsServiceClient();
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("root");
XmlElement element = doc.CreateElement("child");
root.AppendChild(element);
doc.AppendChild(root);
MemoryStream ms = new MemoryStream();
doc.Save(ms);
byte[] bytes = ms.ToArray();
if (client.ServerActive())
{
client.SubmitForm(bytes);
Console.ReadLine();
}
,服務端代碼看起來是這樣的:
public byte[] SubmitForm(byte[] bytes)
{
XmlDocument doc = new XmlDocument();
string xml = Encoding.UTF8.GetString(decryptedBytes);
doc.LoadXml(xml);
XmlNodeList nodeList = doc.GetElementsByTagName("child");
byte[] returnBytes = Encoding.UTF8.GetBytes(nodeList[0].Name);
return bytes;
}
這完美的作品。結果是正確的。但是,當我嘗試從我的文件系統(當我將它顯示到控制檯時正確讀入)讀取實際的xml文件時,即使我僅嘗試接受並返回數組,它仍然會返回錯誤:
類型 'System.ServiceModel.Dispatcher.NetDispatcherFaultException' 的第一次機會異常在mscorlib.dll
發生實際的客戶端代碼:
FormsService.FormsServiceClient client = new FormsService.FormsServiceClient();
XmlDocument doc = new XmlDocument();
doc.Load(myFilePath);
MemoryStream ms = new MemoryStream();
doc.Save(ms);
byte[] bytes = ms.ToArray();
if (client.ServerActive())
{
client.SubmitForm(bytes);
Console.ReadLine();
}
服務端代碼:
public byte[] SubmitForm(byte[] bytes)
{
return bytes;
{
有沒有人遇到過這個問題?我沒有看到兩種情況之間的差異,但我對C#沒有經驗。
任何建議將不勝感激。
謝謝!
badPanda
你的服務端'SubmitForm'非常奇特。你構造了一個從未使用過的'returnBytes'對象,然後將原始的'bytes'參數返回給調用者而不做任何事情。這是由設計嗎? – 2010-06-17 16:08:55
是的。這只是我正在測試的代碼,以使一般功能正常工作......實際應用程序對返回的字節數組有用,而且它不會與發送的一樣。雖然謝謝! – badpanda 2010-06-18 14:30:56