【问题标题】:Wcf post method with long json string parameter带有长json字符串参数的Wcf post方法
【发布时间】:2015-05-04 18:14:18
【问题描述】:

我是 WCF 的新手。 我的问题是如何将长 JSON(这里我将数据表转换为 JSON 字符串)字符串作为 WCF 方法的参数传递?

这是我的代码:

[OperationContract] [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "initiateConnection/{jsonData}/{sessionId}")] 
void testMethod(string jsonData, string sessionId); 
public void testMethod(string jsonData, String sessionId) { } 

当我用很长的jsonData 字符串调用testMethod 时,它正在显示

无效的 URI:Uri 字符串太长

那么在这种情况下,我应该使用 POST 方法传递 JSON 结果吗?如果是,那么如何通过呢?

【问题讨论】:

  • 如果你提到 post 方法,我猜你没有在 WCF 中使用 SOAP,对吧?如果您需要 REST,是否考虑过改用 WebApi?
  • @amarb:您可以在edit 您的问题中包含该信息。

标签: c#


【解决方案1】:

WCF 绑定有一个名为 maxReceivedMessageSize 的属性,该属性默认为相当小的值。您需要将其增加到足够大以处理您的 JSON 字符串。

您还可以配置 WCF 以在客户端和服务器端都输出一些跟踪信息,这将帮助您确定您的请求出了什么问题,因为 WCF 很容易由于引发新的异常而隐藏实际的异常消息在内部异常处理程序中。

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="sdt"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "SdrConfigExample.e2e" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

【讨论】:

    【解决方案2】:

    如果很长超过 2000 个字符,请考虑以下信息:

    What is the maximum length of a URL in different browsers?

    您可能会更改以将 json 数据打包到内容中(URI 本身是 HTTP 标头的一部分)。但是您应该为此更改为 HTTP 方法 POST 或 PUT。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      相关资源
      最近更新 更多