请求过大(30 Mb +)时无法访问端点

时间:2017-08-07 19:38:55

标签: asp.net wcf model-view-controller file-upload web-config

我试图通过MVC和WCF上传文件。

我在MVC项目上的web.config配置为重用大文件。

<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或更多的文件时,我的项目无法访问该服务,抛出此错误消息:

&#34; http://localhost:55010/FileService.svc没有能够接受该消息的侦听端点。&#34;这通常是由不正确的SOAP地址或操作引起的。获取更多细节。 &#34;

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您在IIS Express或IIS中托管服务,则“请求过滤”模块的maxAllowedContentLength的默认值可能会受到影响(默认情况下为30000000) )。

尝试通过在web.config文件中添加以下内容来增加它:

<system.webServer>
  <security>
    <requestFiltering >
      <requestLimits maxAllowedContentLength="52428800" />
    <requestFiltering>
  </security>
</system.webServer>

答案 1 :(得分:0)

我使用以下行修复了服务器web.config上的问题:

    <httpRuntime targetFramework="4.5" enableVersionHeader="false" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />

现在我的问题是System.OutOfMemoryException,当我试图将我的流复制到内存流时,但它不在这个后期escope中。

谢谢你们!