- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,我的 WCF 服务终于运行良好了。这花了我一些时间,但我已经解决了几乎所有的问题。我现在遇到的唯一问题是这个。
我的一个数据请求相当大,它包含一个大约 37k 的集合。我得到的错误如下。
The socket connection was aborted. This could be caused by an error processing
your message or a receive timeout being exceeded by the remote host, or an
underlying network resource issue. Local socket timeout was '00:00:59.9840000'.
最初您可能会认为这是一个序列化问题,或者我需要更改绑定(bind)的容量。
这是我在客户端的绑定(bind)。
<netTcpBinding>
<binding name="MyCustomBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered"
transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="1000000000" maxBufferSize="1000000000"
maxConnections="10" maxReceivedMessageSize="1000000000">
<readerQuotas maxDepth="32" maxStringContentLength="1000000000"
maxArrayLength="50000" 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>
我已经更改了我的绑定(bind)信息以允许更大的容量;但是,这并不能解决我的问题。我开始考虑更改 maxReceiveMessageSize 容量的唯一原因是,如果我将结果限制为 1000 个集合,我就没有问题。当涉及到大型通信时,除了绑定(bind)之外,还有什么配置是我需要担心的吗?
谢谢!
编辑 1
此外,我已将绑定(bind)中的每个超时值的超时更改为 00:10:00,这似乎没有什么不同。服务器的响应不到 5 秒。
编辑2
服务配置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<bindings />
<client />
<services>
<service behaviorConfiguration="serviceBehavior"
name="MyService">
<clear />
<endpoint address="MyCustomObject" binding="netTcpBinding"
bindingConfiguration="" name="MyCustomObject"
contract="MyService.IContract" >
</endpoint>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8732/MyService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
编辑 3
请理解,我没有包含有关该服务模型的任何敏感信息,因此它们已被替换为 MyCustom***。再次,请仔细阅读问题我使用此服务通过其他端点成功地来回传输数据没有问题。另外,正如我上面所说,如果我将结果限制为 1000,我可以跨该端点传输数据。
编辑 4
好吧,让我更清楚一点。客户端应用程序正在获取正确的绑定(bind)。我知道的原因是,当我的应用程序在一个集合中返回大约 4500 个结果的结果集时,会出现以下异常。
The maximum message size quota for incoming messages (65536) has
been exceeded. To increase the quota, use the MaxReceivedMessageSize
property on the appropriate binding element.
所以我将 MaxReceiveMessageSize 增加到可能的最高值 2147483647。根据这个 post .在我这样做之后,我可以安全地返回我的结果集。现在更重要的是,我得到了 5000 个结果,我在这个问题的顶部得到了我的初始异常。
The socket connection was aborted. This could be caused by an error processing
your message or a receive timeout being exceeded by the remote host, or an
underlying network resource issue. Local socket timeout was '00:00:59.9840000'.
很明显,应用程序正在选择正确的绑定(bind)配置,否则它不会响应我在 MaxReceiveMessageSize 中的更改。所以在这一点上真正的问题是为什么它会失败这么小的变化。
最佳答案
最后!好的,这就是问题所在。我超过了客户端的 MaxItemsInObjectGraph 值。所以我需要将此行为添加到客户端配置文件中。
服务器配置
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior" >
<serviceMetadata />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
客户端配置
<behaviors>
<endpointBehaviors>
<behavior name="endpointBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
然后在客户端配置文件端点上,我必须添加该行为。
客户端配置
<client>
<endpoint address="net.tcp://localhost:8732/RootAddress/EndpointLocation"
binding="netTcpBinding" bindingConfiguration="EndpointLocation"
behaviorConfiguration="endpointBehavior"
contract="ServiceReference1.IInterface" name="Interface">
<identity>
<userPrincipalName value="" />
</identity>
</endpoint>
</client>
请注意,我必须将行为部分完全添加到客户端的配置中。因为它不是在我使用添加服务引用时生成的。这之后工作完美,我能够检索我的 37k 自定义对象集合。
关于WCF 可能超出了我的响应大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418938/
在文档中我们可以找到 The limits are based on a moving window that tracks the number of requests you send per h
我试图了解使用 Windows Azure 托管 Web 服务的正确方法。在阅读了一些可用的文档后,我已经达到以下几行: Windows Azure takes the following actio
我正在使用 unboundid ldap sdk 来执行 ldap 查询。运行 ldap 搜索查询时遇到一个奇怪的问题。当我对包含 50k 个条目的组运行查询时出现异常。我的异常(exception)
我有以下 docker-compose 文件: version: "2.4" services: auto_check: image: python mem_limit: 97M
我有副本集(托管在亚马逊上),其中有: 主要 中学 仲裁者 它们都是 3.2.6 版本,这个副本正在我的分片集群中创建一个分片(如果这很重要,尽管我认为它不重要)。 当我在 primary 上键入 r
我知道在 C++ 中访问缓冲区边界是未定义的行为。 这是来自 cppreference 的示例: int table[4] = {}; bool exists_in_table(int v) {
嗨,我有一个表单的 div。我希望当鼠标离开 div 时禁用单击事件。所以我尝试了这个,但它不起作用,div 仍然可以点击。有什么想法吗?? var flag = false; $("#foo").l
我正在使用我的客户端获取有关存储在我的 Swift 对象存储中的某个文件的一些信息,该文件可以通过 REST Api 访问。在 Swift 中,指向指定对象的 HEAD 方法和 url 返回它的元数据
如何在 Excel 的 CONCATENATE 函数中使用超过 255 个字符?我实际上也在 EXCEL 的 HYPERLINK 函数中使用 CONCATENATE 函数。一个例子如下: =HYPER
在 java 6 web 应用程序中,我尝试从执行的命令中检索大量输出。我在 javaworld article 上“借用/窃取/基于”它。我面临的问题是,由于输出被截断,长度似乎超出了大小限制。我已
我有一个更改事件,当选择框更改时会触发该事件。然而,选择框位于被替换的 div 内,因此会重新生成选择框。由于此错误可能是由于无限循环造成的,因此我猜测创建选择框时也必须触发我的触发事件。我尝试了很多
我正在 visual studio 2013 中用 c# 创建一个网络服务。我已连接到数据库并使用以下代码返回 json。 [WebMethod] [ScriptMethod(ResponseForm
我使用 php 脚本解析远程 xml 文件并将网页上的输出打印到 div 中。由于我需要输出必须与当前播放的轨道同步,所以我使用 Javascript 每 20 秒重新加载一次 div 内容。在测试页
#define MAX_BUFF_SIZE 64 char input[MAX_BUFF_SIZE]; int inSize = read(0, input, MAX_BUFF_SIZE); if
我在申请公司时遇到了问题。 我将总结系统的关键要素: 我公司的系统几年前就在 Windows XP 和 7(家庭版、专业版、基本版)机器上运行。 它是用 .NET 4.0 编写的,基于 WCF。 它使
我有一个渲染循环,用于监听数位板输入并从顶点/索引缓冲区(以及其他内容)中绘制。顶点数据可以增长,当它达到一定水平时,DispatchMsg(&msg) 会遇到这种情况: Unhandled exce
我通过 Postgres JDBC 驱动程序使用 Java 1.7 和 Postgres。将从 Web 服务使用数据库连接。在测试中,我得到了以下错误: FATAL: connection limit
我想知道当超过 Firebase 实时数据库的限制时会发生什么。问题是我知道我可以拥有的最大连接数仅为 100。现在,假设我的 Android 应用程序有 1,000 个活跃用户,并且我实现了实时数据
我正在将一组图像上传到我的 node.js Express 服务器,但收到错误 - “错误:超出 maxFieldsSize”。看起来默认的 maxFieldsSize 是 2MB。我需要能够上传最多
我正在使用 Django 构建一个小型 Web 项目,该项目有一个包含 ImageField 的模型 (Image)。当我尝试使用管理界面上传图片时,我遇到了这个问题(删除了个人身份信息): Runt
我是一名优秀的程序员,十分优秀!