2010-06-17 37 views
0

我想从客户端发送一个字节[]到一个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

+2

你的服务端'SubmitForm'非常奇特。你构造了一个从未使用过的'returnBytes'对象,然后将原始的'bytes'参数返回给调用者而不做任何事情。这是由设计吗? – 2010-06-17 16:08:55

+0

是的。这只是我正在测试的代码,以使一般功能正常工作......实际应用程序对返回的字节数组有用,而且它不会与发送的一样。虽然谢谢! – badpanda 2010-06-18 14:30:56

回答

2
+0

所引发的异常是否表明消息大小配额已达到?它确实在我的环境中。 – Kezzer 2010-06-17 15:56:44

+0

它看起来会。但是,这是一个byte [],他发布的链接适用于XML序列化,而不是字节序列化。所以也许错误是不同的? – badpanda 2010-06-17 15:59:33

+0

工作。谢谢! – badpanda 2010-06-17 16:07:24