发送到Web服务的byte []大小问题?

时间:2010-06-17 15:53:04

标签: c# xml web-services bytearray

我正在尝试从客户端向Web服务发送一个byte []。该数组由序列化的XML文件组成。

我的测试场景有效(使用非常小的字节[])。这是代码:

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文件时(当我将它显示到控制台时正确读取),即使我只是尝试接受并返回数组,提交也会返回错误: / p>

mscorlib.dll中出现'System.ServiceModel.Dispatcher.NetDispatcherFaultException'类型的第一次机会异常

实际的客户端代码:

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

1 个答案:

答案 0 :(得分:2)