Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过WCF服务的大文件_C#_Wcf_Large Data Volumes - Fatal编程技术网

C# 通过WCF服务的大文件

C# 通过WCF服务的大文件,c#,wcf,large-data-volumes,C#,Wcf,Large Data Volumes,类似的问题层出不穷,我看了所有的问题。看来没有人能解决我的问题 --更新:- 我正在尝试使用WCF服务将文档(pdf、doc或其他)上载到数据库。 对服务的调用如下所示: using (var cw = new WCFClientWrapper<ICommonService>()) { cw.Channel.DocumentInsert(content, filename, contentType); } 请注意,我正在传递内容的字节数组,因为这是在DB中存储内容需要传递的

类似的问题层出不穷,我看了所有的问题。看来没有人能解决我的问题

--更新:-

我正在尝试使用WCF服务将文档(pdf、doc或其他)上载到数据库。 对服务的调用如下所示:

using (var cw = new WCFClientWrapper<ICommonService>())
{
    cw.Channel.DocumentInsert(content, filename, contentType);
}
请注意,我正在传递内容的字节数组,因为这是在DB中存储内容需要传递的内容

--更新结束--

我可以成功上传一个小文件(几kb)。但是,当我尝试上载更大(20kb)的内容时,会出现一个异常:

格式化程序在尝试反序列化 消息:反序列化操作的请求消息正文时出错 “文档插入”。已指定最大数组长度配额(16384) 读取XML数据时超出。这一配额可增加10% 更改XmlDictionaryReaderQuotas上的MaxArrayLength属性 创建XML读取器时使用的对象。第1行,位置31774

错误似乎很明显。。。只需增加MaxArrayLength。我这样做没有任何成功的结果。以下是my web.configs中的相关部分

客户端:


服务:


附加诊断显示:

  • 构造服务:无错误/警告
  • 开放服务:警告-未找到配置评估上下文-未找到匹配的标记。添加了默认端点
  • 倾听'http://dev.svc.someurl.com/CommonService.svc“:没有 错误/警告
  • 处理消息1:无错误/警告
  • 处理操作'http://tempuri.org/ICommonService/DocumentInsert“。 :抛出我一开始写的异常

非常感谢您的帮助。

几个月前,我遇到了同样的例外。要向WCF服务发送/接收大数据,您必须设置
transferMode=“Streamed”
。当使用transfermode作为缓冲时,它实际上会在上传/下载之前将整个文件放入内存中。因此,web客户端和WCF服务主机上都需要一个大的缓冲区。而流式传输可以通过消除对大内存缓冲区的需求来提高服务的可伸缩性。有关transfermode的更多信息,请参阅MSDN上的文章。好吧,经过一天的努力,我终于发现了一个问题。 我只需确保WCF web.config中标记的名称与命名空间和服务的名称匹配:



不幸的是,根据我提供的信息,这不是你们会看到的东西。

谢谢你们的建议。但是没有帮助。在我看来,它只是忽略了我的绑定,并使用了默认绑定。我不知道为什么或者如何
[OperationContract]
void DocumentInsert(byte[] content, string fileName, string contentType);