WCF 传输数据超时

问题描述

我现在通过WCFstremed方式传输入pdf文件,客户要求传输500M大小,如果WCF和web程序部署在同一台服务器上,可以成功,但是如果我把web程序部署到另一台服务器,wcf不动,每次传输150M左右就超时了,实际上只传了3分钟。我的server端设置如下:<serviceHostingEnvironmentmultipleSiteBindingsEnabled="true"aspNetCompatibilityEnabled="false"minFreeMemoryPercentageToActivateService="1"/><bindings><basicHttpBinding><bindingname="TransferService"allowCookies="false"bypassProxyOnLocal="false"closeTimeout="00:10:00"openTimeout="00:01:00"sendTimeout="00:10:00"receiveTimeout="00:30:00"maxReceivedMessageSize="9223372036854775807"maxBufferPoolSize="524288"maxBufferSize="2147483647"transferMode="Streamed"><readerQuotasmaxDepth="2147483647"maxStringContentLength="2147483647"maxArrayLength="2147483647"maxBytesPerRead="2147483647"maxNameTableCharCount="2147483647"/><securitymode="None"><transportclientCredentialType="None"></transport></security></binding></basicHttpBinding></bindings><services><servicebehaviorConfiguration="TransferServiceBehavior"name="Sg.Com.Socius.Development.EDMS.Portal.Service.Service.TransferService"><endpointaddress=""binding="basicHttpBinding"bindingConfiguration="TransferService"contract="Sg.Com.Socius.Development.EDMS.Portal.Service.Global.ITransferService"></endpoint></service><behaviors><serviceBehaviors><behaviorname="TransferServiceBehavior"><serviceDebugincludeExceptionDetailInFaults="true"/><serviceTimeoutstransactionTimeout="00:10:00"/><serviceMetadatahttpGetEnabled="true"/><dataContractSerializermaxItemsInObjectGraph="2147483647"/><serviceThrottlingmaxConcurrentCalls="500"maxConcurrentSessions="500"maxConcurrentInstances="500"/></behavior></serviceBehaviors><endpointBehaviors><behaviorname="Behaviors.EndpointBehavior"><dataContractSerializermaxItemsInObjectGraph="2147483647"></dataContractSerializer></behavior></endpointBehaviors></behaviors></system.serviceModel><system.web><compilationtargetFramework="4.0"debug="true"/><httpRuntimemaxRequestLength="2097151000"useFullyQualifiedRedirectUrl="true"executionTimeout="14400"/><pagescontrolRenderingCompatibilityVersion="3.5"clientIDMode="AutoID"/></system.web>publicRemoteDocumentNoStreamUploadPdfFileDocument(RemoteDocumentrequest){RemoteDocumentNoStreamresponse=newRemoteDocumentNoStream();response.Success=false;try{MyUtil.addInfoLog("BeginUploadPdfFileDocument:"+request.FileName);FileStreamtargetStream=null;StreamsourceStream=request.FileByteStream;DocdocPDF=newMasterlistPDF(request.ProjectNo,request.FileName);stringfilePath=((MasterlistPDF)docPDF).GenMasterPDFFullName_GuidFN();Util.CreateServerFolderFromFileName(filePath);using(targetStream=newFileStream(filePath,FileMode.Create,FileAccess.Write,FileShare.None)){constintbufferLength=65000;byte[]buffer=newbyte[bufferLength];intcount=0;intiCount=0;while((count=sourceStream.Read(buffer,0,bufferLength))>0){iCount+=1;targetStream.Write(buffer,0,count);}MyUtil.addInfoLog("Readcount:"+iCount);targetStream.Close();sourceStream.Close();}response.ServerFileName=filePath;response.Success=true;//request.ServerFileName=serverFileName;FileInfofi=newFileInfo(filePath);if(!fi.Exists){response.Success=false;}}catch(Exceptionex){MyUtil.addErrorLog(ex.Message);response.Success=false;}MyUtil.addInfoLog("Success:"+response.Success);returnresponse;}客户端设置如下:<system.serviceModel><bindings><basicHttpBinding><bindingname="BasicHttpBinding_ITransferService"closeTimeout="00:10:00"openTimeout="00:10:00"receiveTimeout="00:10:00"sendTimeout="00:10:00"maxReceivedMessageSize="2147483647"maxBufferSize="2147483647"transferMode="Streamed"><readerQuotasmaxStringContentLength="2147483647"/></binding></basicHttpBinding></bindings><client><endpointaddress="http://IP:19288/TransferService.svc"binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_ITransferService"contract="Services.TransferService.ITransferService"name="BasicHttpBinding_ITransferService"/></client></system.serviceModel>每次传输150M3分钟左右就报超时出错了

解决方案

解决方案二:
有时服务器方法根本就没有执行就返回超时出错。

时间: 2024-08-31 17:27:21

WCF 传输数据超时的相关文章

WCF 响应超时问题

作者:jiankunking 出处:http://blog.csdn.net/jiankunking 错误信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时.增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值.分配给此操作的时间可能已经是更长超时的一部分. ---> Syst

wcf 超时 timeout-wcf调用服务 超时问题

问题描述 wcf调用服务 超时问题 这是我模仿网上一些超时解决办法web.config关于超时的配置项,但是一点也不起作用.特别是 最后一个endpoint节点里的,我不太明白里面的参数到底是什么,只是乱填的名字.哪位大神帮忙解释下这里面的参数到底填哪些? 解决方案 binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IEngineFireRiskEvaluation" contract

wcf传输报错,数据量也不是很大

问题描述 Theunderlyingconnectionwasclosed:Theconnectionwasclosedunexpectedly.用wcf传输数据,Dictionary<string,List<T>>的,才1000多条数据就报错了.设置了wcf两端的webconfig还是不行.Serverstacktrace:atSystem.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebExcept

大数据量传输时配置WCF的注意事项

原文:大数据量传输时配置WCF的注意事项 WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定的通道上可以接收的消息的最大大小. basicHttpBinding等预定义的绑定一般具有MaxReceivedMessageSize属性,CustomBinding则需要在Transport中定义. 示例代码: <bindings> <custom

WCF 双工传输文件不稳定,UI假死,客户端响应超时等问题

问题描述 双工部分我是是这样写的,基于会话,Reentran,客户端CheckIn时,服务保存客户端的回调存储列表,传输文件时,服务端循环遍历列表,然后调用某一个客户端的上传文件回调方法(同步,分包同步上传),我的问题是,这样传输文件不太稳定,大概可以传输十几个G以后,软件UI就会假死,客户端会出现等待响应超时的问题请各位大人教我,就我,这问题解决不了,就要被领导K死了... 解决方案 解决方案二:该回复于2011-12-02 08:14:20被版主删除

wcf 设置了超时时间,但是偶尔会有如下错误

问题描述 偶尔客户端会记录到如下日志,当前timeout时间已经设置为两分钟.有没有人碰到过这样的问题,是否可能和网络环境相关?通讯超时,服务器无法返回!!异常详细:System.TimeoutException:打开操作没有在分配的超时00:00:00内完成.分配给此操作的时间可能已经是更长超时的一部分.--->System.TimeoutException:建立指向net.tcp://192.168.1.150:60002/HisService的传输会话时在00:00:00后打开超时.分配给

WCF代码设置最大传输数据

(flightServiceClient.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;  

十五天精通WCF——终结篇 那些你需要注意的坑

终于一路走来,到了本系列的最后一篇了,这一篇也没什么好说的,整体知识框架已经在前面的系列文章中讲完了,wcf的配置众多,如果 不加一些指定配置,你可能会遇到一些灾难性的后果,快来一睹为快吧. 一: 第一个大坑 [数据传输量] 我们使用wcf的目的,就是用来进行分布式的数据交互,既然是交互,就一定要进行数据交换,可能一些新人并没有注意到wcf在数据传输量上 面做了一个大小限制,比如我现在要传输一个2m的txt给service,会出现什么情况??? static void Main(string[]

设置WCF实现传输大数据

WCF可以帮助我们用来传输数据.但是有没有人遇到过需要大容量数据传输的需求呢?只要进行正确的设置就可以实现WCF传输大数据. 在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于数据过大超出限定导致的. 问题是我实际发送的数据是刚刚从WCF服务端接收过来的,一来一去,数据量差别并不大. 然后发现,在客户端和服务端实际使用的是不同的配置,对于客户端,在添加S