wcf - 微调 WCF 绑定(bind)

标签 wcf web-services wcf-binding

我有一个适用于基本查询的 WCF 服务。我从简单的默认开箱即用绑定(bind)(具有默认值的 WSHttpBinding)开始。

数据契约用于自定义对象数组,每个对象的大小约为 6k。当我发送最多 5 个(在单笔交易中)时,效果很好。当我尝试发送 6 个或更多时,出现此错误:

“远程服务器返回错误:(400) 错误请求。”

我研究了一些绑定(bind),并尝试在客户端上设置配置,如下所示:

<binding name="WSHttpBinding_IASRService" closeTimeout="00:10:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
         bypassProxyOnLocal="false" transactionFlow="false" 
         hostNameComparisonMode="StrongWildcard"
         maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000"
         messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
         allowCookies="false">
   <readerQuotas maxDepth="50000000" maxStringContentLength="50000000" 
                 maxArrayLength="50000000" maxBytesPerRead="50000000" 
                 maxNameTableCharCount="50000000" />
   <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
</binding>

我在服务 web.config 文件中类似地设置了配置,但是问题仍然存在。

我还尝试将客户端 app.config 设置为 messageEncoding="Mtom",但这生成了另一个绑定(bind)错误,表示客户端和服务器之间的绑定(bind)可能不匹配,所以我暂时将其删除。 (尽管 Mtom 也在服务器 web.config 中指定。)此外,在我的研究中,我还没有找到每个绑定(bind)属性的清晰简单的描述。

总而言之,我试图回答以下问题:

  1. 如何获取更大的请求而不生成错误请求错误
  2. 如何将客户端设置为 Mtom 而不会产生错误
  3. 是否有关于每个绑定(bind)属性以及如何使用它们的良好基本引用?

最佳答案

这是我为你的 #2 学到的一个技巧:

每次在服务器端对 WCF 进行更改时,请重新编译服务器项目,然后在客户端“更新引用”(右键单击服务引用)。

关于wcf - 微调 WCF 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982846/

相关文章:

iPhone 应用程序因 Mprotect 失败错误而崩溃 (MonoTouch)

具有接口(interface)混淆的 C# 通用 ClientBase

c# - 如何为组合框获取我的数据源一次?

c# - WCF 需要哪种类型的安全性

c# - WCF 多重绑定(bind)

json - 如何在 JSON 中为 WCF REST Web 服务传递空日期或空日期

wcf - 是否可以在同一主机中使用 MSMQ 和不使用 MSMQ 的 WCF 服务使用 WCF 服务?

java - 尝试访问我的 Alfresco 存储库时出现 CmisObjectNotFoundException

android - 如何使用 Eclipse Indigo 在 Android 中导入 Web 服务引用?

c# - System.ServiceModel.AddressAccessDeniedException:HTTP 无法注册 URL http::8080