【问题标题】:WCF Debugging a REST apiWCF 调试 REST api
【发布时间】:2017-03-01 09:26:24
【问题描述】:

已超出传入邮件的最大邮件大小配额 (65536)。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。

配置文件中我的部分

  <system.serviceModel>
    <services>
      <service name="RestAPI.RiskEventAPI" behaviorConfiguration="metadataBehavior">
        <endpoint address=""
                  binding="basicHttpBinding"
                  contract="RestAPI.IRiskEventAPI"/>
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metadataBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
        <behavior name="RestAPI.RiskEventAPIBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="REST">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <webHttpBinding>
        <binding name="BindingWithMaxSizeIncreased"
                 maxBufferSize="2147483647"
                 maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" 
                        maxStringContentLength="2147483647"
                        maxArrayLength="2147483647" 
                        maxBytesPerRead="2147483647"
                        maxNameTableCharCount="2147483647" />
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>

令人困惑的是,网络遍地开花,而没有特定于 REST 和 WCF 的内容。调试窗口出现,但我在这个问题的顶部收到错误...

这没有任何影响:

<endpoint address=""
          binding="basicHttpBinding"
          bindingConfiguration="BindingWithMaxSizeIncreased"
          contract="RestAPI.IRiskEventAPI"/>

复制

<webHttpBinding> to <basicHttpBinding> didn't help either

我试过这个...我使用了 wcf 编辑器并添加了一个 mexHttpBinding,但它与 maxBufferSize、maxBufferPoolSize 和 maxReceivedMessageSize 有问题(说它们是不允许的)

<mexHttpBinding>
    <binding name="bindingMex"
             maxBufferSize="2147483647"
             maxBufferPoolSize="2147483647" 
             maxReceivedMessageSize="2147483647"/>
  </mexHttpBinding>

我试过了(也没用):

    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="IncreasedBindingMaxSize" contract="IMetadataExchange" />
...
      <basicHttpBinding>
        <binding name="IncreasedBindingMaxSize" maxBufferSize="2147483647"
          maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        </binding>
      </basicHttpBinding>

【问题讨论】:

  • 在 Visual Studio 本身中调试服务或附加到正在运行的服务实例时会发生这种情况?我之前有过没有在部署位置更新配置的情况,我一直在查看我的 Visual Studio 项目中的值,但没有意识到这不是错误的地方。如果附加,您能否确保您已在部署位置更新了配置?
  • 很好的问题 - 客户端配置正在使用 https 并且工作正常,它只是在 Visual Studio 中处于调试模式,我们得到了这个限制......因为它是客户端特定的(机器名称、连接字符串、等)我不能在这里发布...
  • 您似乎混淆了rest和wcf。 rest 使用 http 协议,而 wcf 使用 SOAP。还是我在这里遗漏了什么?
  • 不,我们很好 - 我们在 Visual Studio 中处于调试模式,它会抛出错误,而 rest 不会......所以我的问题是如何配置调试模式以减轻错误。当您有一个小的结果集(比如 65536 字节时,它会引发此错误。

标签: c# rest wcf


【解决方案1】:

我认为您遇到此问题的原因是因为您似乎没有为 webHttp 明确定义的端点,并且您没有在配置中使用默认绑定(即 @987654322没有name 属性的@元素)。

这意味着系统将使用webHttpBinding 的默认(较小)值。目前尚不清楚您是否要为您的服务同时使用 SOAP 和 REST 端点 - 您有一个使用 basicHttpBinding 的明确定义的端点,似乎面向 SOAP,但我不确定。

您可以做的是更改您的服务端点并使用webHttpBinding,即REST 行为,并通过` 部分中&lt;endpoint&gt; 元素上的bindingConfiguration 属性将更大的绑定配置“BindingWithMaxSizeIncreased”显式分配给该端点,像这样:

<endpoint address=""
          behaviorConfiguration="REST"
          binding="webHttpBinding"
          bindingConfiguration="BindingWithMaxSizeIncreased"
          contract="RestAPI.IRiskEventAPI"/>

如果您确实需要basicHttpBinding 端点,您可以使用webHttpBinding 添加另一个端点,但您可能需要一个不同于address="" 的地址,可能类似于address="REST"

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 1970-01-01
    • 2018-10-27
    • 2020-02-08
    • 2011-04-28
    • 2023-03-23
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多