我得到的例外是:
General Error Occurred System.ServiceModel.CommunicationException: An error occurred while making the HTTP request
然后它说
This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.
我在两端使用的安全性是wsHttpBinding,没有任何类型的加密。它也只是使用HTTP – 而不是HTTPS,所以我不知道为什么它抱怨HTTPS。
内部异常堆栈的其余部分是:
SystemNet.WebException: The underlying connection was closed: An unexpected error occurred on a send.
—> System.IO.IOException: Unable to write data to the transport connection: An invalid argument was supplied.
—> System.Net.Sockets.SocketException: An invalid argument was supplied at System.Net.Sockets.Socket.MultipleSend(BufferOffsetSize[] buffers,SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[] buffers)
我还应该注意,我的程序中发生这种情况的点是在调用Web服务的“执行”行 – 即,一旦我调用Web服务并传递包装的DataContract对象,它炸毁。
所有这些服务都是通过大量的XML(作为一个.NET对象传递给客户端的调用),然后它做一些工作。可能大约100-200k的XML正在传输。我已经把两端的数据大小的限制提高到6多万字节,但是这似乎没有帮助。
有任何想法吗?
有关此问题的更多信息:
当我们在本地复制客户端环境时,我们发现我们无法上传大量的XML,除非我们进行以下更改:
1.在服务器上,将“maxRequestLength”设置为100 MB(方式高于我们发送的方式)
2.在客户端上,我们将dataContractSerializer标记下的maxItemsInObjectGraph的值设置为“2147483646”。
通过这些更改,我们的本地安装成功上传。但是,客户端在其服务器上的安装仍然失败。有趣的是,一旦我们在服务器上更改了maxRequestLength值,我们的测试安装开始抛出一个与maxItemsInObjectGraph设置相关的错误。而在我们的客户端的服务器上,仍然是原始的“HTTP.sys”错误发生。
如前所述,我们根本不使用SSL,还有其他两个Web服务调用以相同的方式执行和上传XML。然而,由于非工作服务呼叫传输更多的数据,这似乎是大小问题。
但是,如果客户端具有的问题是我们的测试安装相同的,我不知道为什么客户端错误消息不会与ObjectGraph错误相关。
有可能我们只是得到通用的“无效参数”“HTTP.sys”错误的客户端上的每一个可能的错误(即它真的得到objectGraph错误,但只是不显示它?)