我已经很抱歉一遍又一遍地问同样的问题。我们正在使用 WPF 客户端应用程序运行 WCF 服务,并希望通过 WCF 服务将大型数据从客户端应用程序传输到数据库,此设置没有什么特别之处。现在,当然,当尝试将数据(超过 16kb)作为字节数组上传时,我收到通常的“超出最大数组长度配额”,这让我不得不在服务器端以及我的应用程序上配置我的 web.config客户端的 .config 以包含所有内容的更高读者配额。
现在,由于这在stackoverflow上经常被视为安静,我做了很多研究,最后得出了通过以下方式跟踪我的服务绑定的结果
Trace.WriteLine(OperationContext.Current.EndpointDispatcher.ChannelDispatcher.BindingName)
这给了我http://tempuri.org/:BasicHttpBinding(尽管配置了其他命名空间)并且提出了我的自定义绑定是否应用的问题。请您看一下我的 web.config 的部分代码(服务端)
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483646" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDataController" closeTimeout="00:05:00"
openTimeout="00:05:00" receiveTimeout="00:05:00" sendTimeout="00:05:00"
maxBufferPoolSize="500000000" maxBufferSize="500000000" maxReceivedMessageSize="500000000" messageEncoding="Mtom">
<readerQuotas maxDepth="500000000" maxStringContentLength="500000000"
maxArrayLength="500000000" maxBytesPerRead="500000000" maxNameTableCharCount="500000000" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="DataController">
<endpoint address="http://vs0092:81/DataController/DataController.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IDataController"
contract="SMS.RC.IDataController" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
现在客户端 app.config 看起来像这样
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDataController"
openTimeout="00:05:00"
sendTimeout="00:05:00"
receiveTimeout="00:05:00"
closeTimeout="00:05:00"
maxBufferPoolSize="500000000"
maxReceivedMessageSize="500000000"
maxBufferSize="500000000">
<readerQuotas maxDepth="500000000"
maxStringContentLength="500000000"
maxArrayLength="500000000"
maxBytesPerRead="500000000"
maxNameTableCharCount="500000000" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://vs0092:81/DataController/DataController.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDataController"
contract="FBCDataController.IDataController" name="BasicHttpBinding_IDataController" />
</client>
</system.serviceModel>
那么你看到问题了吗?我没有,而且我在解决这个问题上确实付出了很多努力,但我想此时我的 WCF 知道如何很小。为什么服务的绑定没有应用??这可能是实施良好服务行为的问题吗?有没有办法查找服务的正确名称?(我读到的必须是包含命名空间的全名)
非常感谢,汤姆