WCF 最大消息大小

2023-12-01

我有两个服务,并且在它们之间发送相当大的消息(~100kb)。尽管前面提到的值是消息大小的典型值,但它可能会大幅波动(正向和负向)。

因此,为了处理我必须传输膨胀消息的情况,我在客户端和服务器端的 app.config 中调高了所有最大消息大小、最大字符串大小等属性(相关端点正确引用了绑定)其中规定了尺寸)。

为了安全起见,我设置的界限完全超出了任何可能的消息大小。然而,当服务间通信在消息大小规模的较低端被证明是可靠的时,在较高端则并非如此——消息似乎根本没有被传递。

最奇怪的是if消息超出了最大大小,然后会抛出异常(我遇到过足够多的异常,知道这一点!哈哈),但没有抛出任何异常 - 这一切都完全安静地过去。我已经尝试过各种大小的消息,并且它肯定只会随着消息大小的增长而开始发生。我可以证明目标服务没有接收到,因为在接收时,该服务会在数据库中生成日志 - 但对于大消息,不会生成日志。

正如我所说,我几乎可以肯定我已经增加了 app.config 中所有适用属性的大小,因此我对这种行为完全感到困惑!

关于什么可能导致这种神秘行为有什么建议吗?


好吧,这个问题似乎已经解决了(突然之间,在之前从未抱怨过之后,WCF 开始对 app.config 中的某个值感到不安,改变了它,然后它似乎就起作用了!)

但是现在我有一个同样奇怪的问题!由于某种原因,它拒绝接受我已配置要发布的元数据。我的 app.config (主机端)设置如下:

<services>
  <service name="DataFeederService.FeederService" behaviorConfiguration="DataFeederService.FeederServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8010/Feeder"/>
        <add baseAddress="net.pipe://localhost/FeederPipe"/>
      </baseAddresses>
    </host>
    <!-- Service Endpoints -->
    <!-- Unless fully qualified, address is relative to base address supplied above -->
    <endpoint name="namedPipeEndpoint" 
    address=""  
    bindingConfiguration="IPCWindowsSecurity" 
    binding="netNamedPipeBinding" 
    contract="DataFeederService.IFeederService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint name="httpEndpoint" 
    address="FeederService" 
    binding="wsHttpBinding" 
    bindingConfiguration="httpBinding" 
    contract="DataFeederService.IWebFeederService"/>

    <!-- Metadata Endpoints -->
    <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. -->
    <!-- This endpoint does not use a secure binding and should be secured or removed before deployment -->
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>

<bindings>
  <netNamedPipeBinding>
    <binding name="IPCWindowsSecurity" 
    maxBufferPoolSize="965536" 
    maxBufferSize="965536" 
    maxReceivedMessageSize="965536">
      <readerQuotas maxStringContentLength="965536" />
      <security mode="Transport">
        <transport protectionLevel="EncryptAndSign" />
      </security>
    </binding>
  </netNamedPipeBinding>
  <wsHttpBinding>
    <binding name="httpBinding" 
    maxBufferPoolSize="965536"
    maxReceivedMessageSize="965536">
      <readerQuotas maxStringContentLength="965536" />
    </binding>
  </wsHttpBinding>
</bindings>

<behaviors>
  <serviceBehaviors>
    <behavior name="DataFeederService.FeederServiceBehavior">
      <!-- To avoid disclosing metadata information, 
      set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="True" policyVersion="Policy15"/>
      <!-- To receive exception details in faults for debugging purposes, 
      set the value below to true.  Set to false before deployment 
      to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

我已尽力弄清楚为什么它会声称元数据未在指定地址发布”http://localhost:8010/Feeder/mex“。任何帮助都会greatly赞赏。

Cheers!

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

WCF 最大消息大小 的相关文章

随机推荐

  • 实体类的正确设计。需要建议

    例如我有实体类User public class User private long id private String name setters and getters 接下来 我添加新的实体类 Comment public class
  • 将 pandas 数据框拆分为许多块

    假设我有一个具有以下结构的数据框 observation d1 1 d2 1 d3 1 d4 1 d5 1 d6 1 d7 1 d8 1 d9 1 d10 1 d11 1 d12 1 d13 1 d14 1 d15 1 d16 1 d17
  • Ukkonen 的后缀树算法(通俗易懂)

    我现在感觉有点厚 我花了几天时间试图完全理解后缀树的构造 但由于我没有数学背景 许多解释都让我无法理解 因为它们开始过度使用数学符号系统 我发现的最接近一个好的解释是使用后缀树快速字符串搜索 但他掩盖了各个要点 并且算法的某些方面仍然不清楚
  • 关于类型细化语法的困惑

    在类型级别上 我偶然发现以下内容 sealed abstract class StSource A type S def init S create the initial state def emit s S A S emit a val
  • Extjs4组合框在网格中显示值

    请帮忙 我想展示我的displayValue在网格中 我找到了解决方案here 但我不明白如何使用它 我的代码 columns header Product id combo locked true dataIndex prod id ed
  • Android - 如何用另一个字符串替换部分字符串?

    我有一些带有数字和英语单词的字符串 我需要通过找到它们并将它们替换为该单词的本地化版本来将它们翻译成我的母语 你知道如何轻松实现字符串中的单词替换吗 Thanks Edit 我已经尝试过 字符串 to 的一部分应替换为 xyz string
  • Firebase 使用浮点数作为键

    我意识到 当将一些 JSON 数据推送到我的 Firebase 存储 其键是浮点数 时 我从服务器收到 400 HTTP 错误请求 这是我得到的回复 error Invalid data couldn t parse JSON object
  • gdb if 条件语法错误

    我在文件 test f90 中有一个非常简单的 Fortran 程序 program test real x x 12 write x end program test 我用它编译 gfortran g test f90 然后我尝试使用 g
  • PEG (Grako) 的选项解析不足?

    我的同事 PaulS 问了我以下问题 我正在为现有语言 SystemVerilog IEEE 标准 编写一个解析器 并且该规范中有一条结构与此类似的规则 cover point data type identifier coverpoint
  • 如何在 Inno Setup 中更改 RTF 文本中超链接的颜色

    我正在使用来自的代码如何向自定义 Inno Setup WelcomeLabel 添加可点击链接 procedure InitializeWizard var RichViewer TRichEditViewer begin RichVie
  • jQuery.Click 方法重新加载页面

    我正在尝试创建一个浮动 div 当按钮被触发时它就会出现 这并不难 但是当我按下按钮时 页面会自动重新加载 我不知道为什么 我尝试使用 Bootstrap 的 Popover 但由于同样的问题 它无法按预期工作 当弹出窗口被触发时 页面会重
  • 返回浮点类型是否完全符合 IEEE-754 的函数?

    我想写一个函数来检查float double or long double完全符合 IEEE 754 格式 我是说 float IEEE 754 二进制32 双 IEEE 754 二进制 64 长双 IEEE 754 二进制 128 我以为
  • 在Python 3中读取文件时编码错误?

    当我在 python 中读取文件并将其打印到屏幕上时 它无法正确读取某些字符 但是 这些相同的字符硬编码到变量 print 中就可以了 以下是 test html 包含文本 Hall 的示例 with open test html r as
  • 如何在 iOS 上使用 AVAudioPlayer 播放指定时长的声音?

    我想在 IOS 上播放声音文件中指定的持续时间 我在 AVAudioPlayer 中找到了一种方法 该方法寻求播放的开始 playAtTime 但我找不到直接的方法来指定声音文件结束之前的结束时间 有办法实现这一点吗 如果您不需要太精确并且
  • 修改OpenGL轴系统

    我正在将 OpenGL 与 gluPerspective 一起使用 我需要做什么才能使其使用原点位于左上角而不是左下角的轴系统 我想说 直接对投影矩阵进行操作是这种操作的一种简洁方法 但如果万一您需要替代方案 你可以只使用glScalef
  • ES2.0中如何使用VBO画圆

    我正在尝试在Linux环境下开发ES 2 0应用程序 我的目标 GPU 是 Fujitsu ruby MB86298 为了优化性能 我决定使用 VBO 概念 我对 VBO 很陌生 我使用 VBO 渲染基本图元 例如三角形和四边形 其中没有顶
  • 在 angularjs 中缓存图像 - ngRepeat

    我想知道如何在 AngularJS 中实现图像缓存 或者如何在同一应用程序中加载一次图像并多次使用它 我必须显示目录列表用户界面选择 下拉列表可能包含文件夹或文件 对于文件夹 我想显示文件夹图标 对于文件 我想显示文件图标 我正在使用 ng
  • 如何使用 printf() 格式化字符串以获得相同的输出长度

    我有两个函数 一个函数产生如下消息Starting initialization 另一个检查返回代码和输出 Ok Warning or Error 然而 产生的输出具有不同的长度 Starting initialization Ok Che
  • 在 c++/cli dll 中引发事件并在 c# 中使用

    在我的 C 应用程序中 我有一个进度条 C 应用程序正在调用处理多个文件的 c cli dll 由于每个文件都在 dll 中处理 我想跟踪它在 c 应用程序中的进度 为此 我需要在 c cli 中引发一个事件并在 C 中使用它 从 MSDN
  • WCF 最大消息大小

    我有两个服务 并且在它们之间发送相当大的消息 100kb 尽管前面提到的值是消息大小的典型值 但它可能会大幅波动 正向和负向 因此 为了处理我必须传输膨胀消息的情况 我在客户端和服务器端的 app config 中调高了所有最大消息大小 最