我有一个Silverlight应用程序,可以将文件以块的形式上传到WCF服务。当我在本地运行服务和Silverlight应用程序时,一切正常。当我将它们都部署到IIS时,它将适用于小于块大小的文件(在这种情况下为16k)但如果文件大于该文件则失败。这几乎与此处描述的问题完全相同:http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/19329afc-8a73-4756-80cd-bbdada75c0e2但是那里的解决方案对我不起作用,我已经保留了对WCF代理实例的强引用。但就我而言,单个异步调用将成功,但多个调用将失败。
这是web.config中的serviceModel条目:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="binaryHttpBinding" closeTimeout="00:20:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:20:00">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647" maxSessionSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
</binaryMessageEncoding>
<httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" authenticationScheme="Anonymous" maxBufferSize="2147483647" transferMode="Buffered"/>
</binding>
</customBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="ADE.Web.IADEFileTransferService" >
<endpoint address="" binding="customBinding" bindingConfiguration="binaryHttpBinding"
contract="ADE.Web.ADEFileTransferService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
答案 0 :(得分:0)
您需要在客户端和服务器端上使用相同的readerQuotas设置,即您的silverlight配置文件也需要具有相同的设置。
还可以考虑使用maxItemsInObjectGraph在serviceBehaviour选项卡中添加dataContractSerializer元素,如下所示
<serviceBehaviors>
<behavior name="default">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
您也可以尝试添加httpRunTime元素的maxRequestLength值,如下所示:
<system.web>
<httpRuntime maxRequestLength ="32768"/>
</system.web>