无法通过超过1MB的Web服务上传文件

时间:2014-06-27 20:09:26

标签: vb.net web-services wcf visual-studio-2012 web-config

有些人可以看看我的web.config并告诉我它有什么问题吗?我只是无法通过大于1MB的远程Web服务上传文件。我猜它与属性设置有关,但到目前为止我没有运气改变值。或者它是主机服务器端的设置,我无法覆盖?

     <?xml version="1.0"?>
    <configuration>
      <appSettings>
        <add key="CategoryPath" value="QA/ProcessValidation"/>
      </appSettings>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
      </startup>
      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_Authentication" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
              <security mode="None">
                <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                <message clientCredentialType="UserName" algorithmSuite="Default"/>
              </security>
            </binding>
            <binding name="BasicHttpBinding_DocumentManagement" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
              <security mode="None">
                <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                <message clientCredentialType="UserName" algorithmSuite="Default"/>
              </security>
            </binding>
            <binding name="BasicHttpBinding_ContentService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
              <security mode="None">
                <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                <message clientCredentialType="UserName" algorithmSuite="Default"/>
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
        </client>
      </system.serviceModel>
      <system.web>
        <compilation debug="true"/>
      </system.web>
    </configuration>
编辑:我无法控制服务器端的服务,实际上我只使用WCF而且只有链接。

1 个答案:

答案 0 :(得分:2)

您发布的配置文件是客户端配置还是服务器配置还不完全清楚,但是我会做出一个半教育的猜测并说它是客户端配置,并且您正在使用您的客户端连接到第三方服务。

如果您不了解您所看到的错误消息和/或行为,或者您在代码中创建客户端的方式,您可以尝试以下几种方法:

  1. 增加maxStringContentLength元素中<readerQuotas>属性的大小。现在它被设置为默认值8,192字节。
  2. 如果这是服务配置,请增加maxReceivedMessageSize元素中的<binding>属性 - 现在它也设置为默认值65536。
  3. 这两个属性的最大值为Int32.MaxValue - 大约2GB。在任何一种情况下,除非你在配置文件中指定了一个端点(你当前不会出现),它引用定义的绑定配置(通过<endpoint>元素bindingConfiguration属性),您将始终获得端点绑定的默认值。

    因此,您需要将绑定定义设置为默认值(通过省略name元素中的<binding>属性,或者您需要使用以下内容分配要使用的绑定配置端点上的bindingConfiguration属性,如下所示:

    <endpoint address="" binding=basicHttpBinding"
              bindingConfiguration="MyBinding" contract="MyService.IMyService" />
    

    如果服务不在您的控制之下,那么如果他们设置了下限,您将无法做很多事情,因为客户端无法修改服务的配置(并且该服务无法修改客户端&#39) ; s)。配置是分开的,但许多部分(绑定,安全性等)必须匹配。

    如果以上内容没有帮助,请编辑您的问题以添加更多信息(您看到的是什么错误消息/行为,是客户端还是服务配置,您是如何创建客户端的,您是否拥有服务配置等。)