发送到Web服务的字节[]的大小问题?
问题描述:
我想从客户端发送一个字节[]到一个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