请求太大时无法访问端点(30 Mb +)
问题描述:
我试图通过MVC和WCF上传文件。请求太大时无法访问端点(30 Mb +)
我的MVC项目web.config配置为recive大文件。
<binding name="BasicHttpBinding_IFile" closeTimeout="00:30:00"
openTimeout="00:30:00" sendTimeout="00:30:00" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" messageEncoding="Mtom" />
当我打电话给我的WCF时,就会出现这个问题。端点是正确的MVC项目和WCF web.config中有此绑定:
<basicHttpBinding>
<binding name="FileUploadServiceBinding"
transferMode="Streamed"
messageEncoding="Mtom"
maxBufferPoolSize="2147483647"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
receiveTimeout="00:30:00"
openTimeout="00:30:00"
closeTimeout="00:30:00"
sendTimeout="00:30:00">
<security mode="None">
<transport clientCredentialType="None" />
</security>
<readerQuotas maxDepth="100"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
我送25MB的文件,它的工作,但是当我尝试上载30MB以上,我的项目文件无法到达服务,抛出此错误消息:
“没有监听端点http://localhost:55010/FileService.svc能够接受该消息。”这通常是由不正确的SOAP地址或操作引起的。获取更多细节。 “
谢谢!
答
我固定在服务器与以下行web.config中的问题:
<httpRuntime targetFramework="4.5" enableVersionHeader="false" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
现在我的问题是System.OutOfMemoryException当我试图将我的流复制到内存流,但它已经超出了这篇文章。
谢谢你们!
答
如果你正在主持在IIS Express或IIS服务,机会是为请求筛选模块的方式获得的maxAllowedContentLength
默认值(默认情况下它是3000) 。
尝试通过添加类似的web.config文件下列增加它:
<system.webServer>
<security>
<requestFiltering >
<requestLimits maxAllowedContentLength="52428800" />
<requestFiltering>
</security>
</system.webServer>
+0
问题是未配置的标记httpRuntime上的属性maxRequestLength。现在它被设置为2147483647并且web.config的问题已修复。谢谢。 –
你还设置了服务器的[MaxBufferSize](https://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpbinding.maxbuffersize(v = vs.95).aspx)吗?默认值只有64k。任何可能发生超时的机会?任何有可能无法处理消息大小的网络节点(例如入站代理服务器或网关)? –
服务器的MaxBufferSize也是它的权利。超时时间为30分钟。我找到了解决方案。这是服务器的httpRunTime。现在MaxRequestLength属性是“2147483647”并且它的工作。谢谢你的帮助。 –