2014-09-04 36 views
0

我有一个应用程序,其中在我的一个方法中,我将文件传输到服务器。无法通过nettcp绑定上传大文件和transfermode =“缓冲”

我可以轻松地上传大约50 KB的文件。但是我的最大限制将在3 MB左右。

我WCR服务托管在Windows服务与NetTcpBinding的

我的Windows配置,那么

<configuration> 
    <system.serviceModel> 
    <services> 
     <service name="BTWAServerWindowsService.BatchManagementService" 
       behaviorConfiguration ="BatchManagementService"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:9999/BatchManagementService" /> 
      </baseAddresses> 
     </host> 
     <endpoint name="BatchManagementServiceEndPoint" 
     address ="" 
     binding="netTcpBinding" 
     contract="BTWAServerWindowsService.IBatchManagementService"> 
     </endpoint> 
     <endpoint name="BatchManagementServiceMetadataPoint" address="mex" 
       binding="mexTcpBinding" 
       contract="IMetadataExchange"/> 
     </service>  
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="BatchManagementService"> 
      <serviceMetadata httpGetEnabled="False"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior>  
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

我的客户的配置是

<configuration> 
    <system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="BatchManagementServiceEndPoint" closeTimeout="00:10:00" 
      openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" 
      transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
      hostNameComparisonMode="StrongWildcard" listenBacklog="524288" 
      maxBufferPoolSize="524288" maxBufferSize="524288" maxConnections="524288" 
      maxReceivedMessageSize="524288"> 
      <readerQuotas maxDepth="524288" maxStringContentLength="524288" 
      maxArrayLength="524288" maxBytesPerRead="524288" maxNameTableCharCount="524288" /> 
      <reliableSession ordered="true" inactivityTimeout="00:10:00" 
      enabled="false" /> 
      <security mode="Transport"> 
      <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> 
      <message clientCredentialType="Windows" /> 
      </security> 
     </binding>  
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.tcp://localhost:9999/BatchManagementService" 
     binding="netTcpBinding" bindingConfiguration="BatchManagementServiceEndPoint" 
     contract="BTWABatchManagement.IBatchManagementService" name="BatchManagementServiceEndPoint" />  
    </client> 
    </system.serviceModel> 
</configuration> 

此刻我不是在改变位置转移模式为流式传输,因为还有其他多种方法

请建议我将配置更改为什么将我的文件限制增加到4 MB

回答

1

在您的服务端app.config中的netTcpBinding以及客户端app.config中对以下属性进行更改

maxBufferPoolSize="1073741824" maxBufferSize="1073741824" maxConnections="10" 
      maxReceivedMessageSize="1073741824"> 
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 

这些属性的最大值为2147483647

<bindings> 
     <netTcpBinding> 
     <binding name="BatchManagementServiceEndPoint" closeTimeout="00:10:00" 
      openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" 
      transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
      hostNameComparisonMode="StrongWildcard" listenBacklog="524288" 
      maxBufferPoolSize="1073741824" maxBufferSize="1073741824" maxConnections="10" 
      maxReceivedMessageSize="1073741824"> 
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <reliableSession ordered="true" inactivityTimeout="00:10:00" 
      enabled="false" /> 
      <security mode="Transport"> 
      <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> 
      <message clientCredentialType="Windows" /> 
      </security> 
     </binding>  
     </netTcpBinding> 
</bindings> 

希望这有助于

+0

感谢德拉纳。刚刚完成就像http://www.wcftutorial.net/WCF-Transfer-mode.aspx中提到的那样 – 2014-09-04 06:48:17