为什么我仍然收到“已超过传入邮件的最大邮件大小配额 (65536)”错误?

2024-04-25

我遇到了众所周知的 WCF 错误:

已超出传入消息的最大消息大小配额 (65536)。要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。

在阅读了此错误的前五个 Google 结果后,我仍然不知道我的服务/客户端的配置可能有什么问题。

我尝试过的:

  1. Setting maxReceivedMessageSize http://social.msdn.microsoft.com/Forums/silverlight/en-US/5cd76441-6452-4114-98e3-5be7b3074404/the-maximum-message-size-quota-for-incoming-messages-65536-has-been-exceeded-to-increase-the?forum=silverlightdevtools.

  2. Setting maxBufferSize and maxBufferPoolSize https://stackoverflow.com/a/5459751/240613.

  3. Adding readerQuotas https://stackoverflow.com/a/19564171/240613.

  4. 确保客户端和服务器的值相同。 https://stackoverflow.com/a/18430650/240613.

  5. 确保绑定配置是按名称指定的。 https://stackoverflow.com/a/16266316/240613

  6. 在服务名称中包含命名空间。 https://stackoverflow.com/a/7809555/240613

注意:

  • 小消息可以正确传输,但是当客户端向服务器发送大消息时,就会出现上述错误。

  • 太大的消息包含约 350 KB 字节数组(假设 WCF 配置为将二进制数据编码为 Base64)。

  • 这是一种 (1) 双向通信,(2) 使用网络 TCP 绑定,(3) 可靠会话和 (4) 启用排序(这四点与我见过的搜索错误的每个示例不同)。

  • 该服务由随 Visual Studio 2012 安装的 IIS Express 托管。

这是我的配置。有什么提示吗?

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
                           multipleSiteBindingsEnabled="true" />
<bindings>
  <netTcpBinding>
    <binding name="netTcpEndpoint"
             receiveTimeout="00:10:00"
             sendTimeout="00:10:00"
             maxBufferSize="2147483647"
             maxReceivedMessageSize="2147483647"
             maxBufferPoolSize="2147483647">
      <readerQuotas maxDepth="2147483647"
                    maxArrayLength="2147483647"
                    maxStringContentLength="2147483647"
                    maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647"/>
      <reliableSession ordered="true"
                       inactivityTimeout="00:10:00"
                       enabled="false" />
      <security mode="None">
        <message clientCredentialType="None" />
      </security>
    </binding>
  </netTcpBinding>
</bindings>
<services>
  <service behaviorConfiguration="DebugOrientedBehavior"
           name="DemoNamespace.PipeService">
    <endpoint address="Default.svc"
              binding="netHttpBinding"
              name="TransportLayerServiceEndpoint"
              contract="DemoNamespace.IPipeService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://example.com/Default.svc" />
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="DebugOrientedBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

客户端配置是这样的:

<bindings>
  <netHttpBinding>
    <binding name="TransportLayerServiceEndpoint"
             receiveTimeout="00:10:00"
             sendTimeout="00:10:00"
             maxBufferPoolSize="2147483647"
             maxBufferSize="2147483647"
             maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647"
                    maxArrayLength="2147483647"
                    maxStringContentLength="2147483647"
                    maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647"/>
      <reliableSession ordered="true"
                       enabled="false" />
      <webSocketSettings transportUsage="Always" />
    </binding>
  </netHttpBinding>
</bindings>
<client>
  <endpoint address="ws://example.com/Default.svc/Default.svc"
            binding="netHttpBinding"
            bindingConfiguration="TransportLayerServiceEndpoint"
            contract="PipeServiceReference.IPipeService"
            name="TransportLayerServiceEndpoint" />
</client>

您的服务配置似乎有问题 - 您指定netHttpBinding对于没有绑定配置的服务端点,并且您定义了一个配置netTcpBinding(但显然没有使用)。您的配置的相关服务部分位于此处:

<endpoint address="Default.svc"
          binding="netHttpBinding"
          name="TransportLayerServiceEndpoint"
          contract="DemoNamespace.IPipeService" />

请注意,没有bindingConfiguration值设定。我建议将客户端中定义的绑定配置添加到您的服务配置中,然后更新服务端点以使用该绑定:

<endpoint address="Default.svc"
          binding="netHttpBinding"
          bindingConfiguration="TransportLayerServiceEndpoint"
          name="TransportLayerServiceEndpoint"
          contract="DemoNamespace.IPipeService" />

目前您的服务正在使用默认值netHttpBinding,这可能是您仍然收到错误的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我仍然收到“已超过传入邮件的最大邮件大小配额 (65536)”错误? 的相关文章

随机推荐

  • 无法在 _app.js 中使用 getStaticProps

    我正在使用 next js 并尝试执行以下操作 获取 app js中与用户数据相关的基本数据 该数据包括标题 用于导航栏 和一些社交链接 用于页脚 在构建时将该数据传递给其他组件 例如页脚和导航栏 用于静态站点生成 为此我已经导出了getS
  • 使用监视器的单车道桥

    在大学里 我从 Gregory R Andrews Foundations of Multithreaded programming 中得到了这个规范的并行编程问题 虽然我有这本书的较新版本和俄语版本 但我发现了一个旧的英语变体并尝试正确传
  • 没有 fflush(stdout) 则输出不打印

    我不明白为什么有时我需要使用fflush 有时不是 我的程序目前出现段错误 我正在使用 print 语句对其进行调试 当程序出现段错误时 stdout不自动刷新缓冲区 我不明白为什么有时需要使用 fflush 而有时需要使用 不是 有时 s
  • 为什么我不能在类方法中使用预定义变量?

    我尝试在类方法中使用预定义变量 例如 PSVersionTable 或 PSScriptRoot 他们失败并显示错误消息 方法中未分配变量 Example Class Foo String Version GetVersion If PSV
  • Git:更改不应该保留在其分支内吗?

    我对使用 Git 还比较陌生 这是我到目前为止所做的 git branch master git status On branch master nothing to commit working directory clean git b
  • ffmpeg 使用 -movflags faststart

    我尝试使用命令 movflags 快速启动 并得到以下错误 Microsoft Windows 版本 6 0 6002 版权所有 c 2006 Microsoft 公司 版权所有 C uploads 1 videos gt ffmpeg i
  • MATLAB 颜色条刻度标记错误?

    我正在绘制 9 个子图 如下图所示 其中一个颜色条代表三个子图 在这里我想将颜色条中的最高值显示为 gt value 令人惊讶的是 当我手动将刻度标签编辑为h TickLabels end gt h TickLabels end 颜色条开始
  • 哪种架构称为非均匀内存访问(NUMA)?

    根据wiki http en wikipedia org wiki Non uniform memory access 非均匀内存访问 NUMA 是一种用于多处理的计算机内存设计 其中内存访问时间取决于相对于处理器的内存位置 但尚不清楚它是
  • 处理数据表中的会话超时(使用服务器端数据源处理)

    我有一个由服务器端 Ajax 数据源支持的数据表表单 它在后端使用 struts 操作来处理请求 获取数据并发送 JSON 响应 服务器端操作需要在身份验证模式下运行 即需要有一个活动会话 处理数据表中会话超时错误的最佳方法是什么 目前它只
  • 用渐变色绘制一个 D3 圆

    如何用渐变颜色画一个圆 比如说 从黄色到蓝色的渐变 通常 要创建黄色圆圈 我们可以使用以下代码 var cdata 50 40 var xscale 40 var xspace 50 var yscale 70 var svg d3 sel
  • 带有版本控制的 json 数据存储

    问题定义 有一个Java服务器存储JSON可以映射到 Java 类的数据 Java 类可能会发生变化 目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象 应该有一个良好的版本控制系统 例如 能够向 J
  • Emacs Evil“重复”(点)行为

    我的中有以下行 emacs define key evil normal state map M j lambda interactive evil next line 5 这使得文件中的导航变得更加容易 例如 与M j我在下面 5 行 所
  • 自动调整文本框控件的垂直大小

    在 C 表单中 我有一个面板锚定所有侧面 内部有一个文本框 锚定顶部 左侧 右侧 当文本加载到文本框中时 我希望它自动垂直扩展 这样我就不需要滚动文本框 如果有更多文本不适合面板 最多滚动面板 有什么方法可以用文本框做到这一点吗 我不限于使
  • WPF 路径冲突检测?

    I have two hexagon shapes
  • 通过 dataTransfer 传递对象

    我试图找出一种通过 javascript 的 event dataTransfer 传递本机对象以进行拖放的方法 我正在编写 CMS 的前端编辑器部分 并希望用户能够拖放元素 许多不同类型 从文件到图像到 HTML 片段到几乎任何内容 这就
  • 查询具有相同ID的同一列中具有不同值的SQL表

    我有一个 SQL Server 2012 表ID First Name and Last name The ID每个人都是唯一的 但由于历史提要中的错误 不同的人被分配了相同的 ID ID FirstName LastName 1 ABC
  • 使用字典作为数据源绑定组合框

    我正在使用 NET 2 0 并且尝试将组合框的数据源绑定到已排序的字典 所以我收到的错误是 在数据源上找不到 DataMember 属性 Key SortedDictionary
  • 记录到 golang 中的文件

    我从 golang 开始 当我开始构建我的应用程序时 我想从一开始就添加日志记录 这就是我遇到问题的地方 如果我打开一个文件并使用标准日志记录库 我就可以写入文件 就像这样 package main import os fmt log fu
  • Socat串口嗅探

    我目前正在尝试访问连接到应用程序的串行端口的两个方向上的数据 我想做的是 ttymxc0 socat sniff ttyV0 应用程序ttymxc0 是真实端口 ttyV0 是虚拟端口 我发现 socat 命令适用于 Ubuntu 16 0
  • 为什么我仍然收到“已超过传入邮件的最大邮件大小配额 (65536)”错误?

    我遇到了众所周知的 WCF 错误 已超出传入消息的最大消息大小配额 65536 要增加配额 请使用相应绑定元素上的 MaxReceivedMessageSize 属性 在阅读了此错误的前五个 Google 结果后 我仍然不知道我的服务 客户