Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有长json字符串参数的Wcf post方法_C# - Fatal编程技术网

C# 具有长json字符串参数的Wcf post方法

C# 具有长json字符串参数的Wcf post方法,c#,C#,我是WCF的新手。 我的问题是如何传递一个长JSON(这里我将数据表转换为JSON字符串)字符串作为WCF方法的参数 这是我的密码: [OperationContract] [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "initiateConnection/{jsonData}/{ses

我是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结果吗?如果是,那么如何传递它?

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>


< /代码>

如果非常长超过2000个字符,请考虑此信息:


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

如果您提到POST方法,我想您在WCF中没有使用SOAP,对吗?如果您需要休息,您是否考虑过使用WebApi?@amarb:您可以在您的问题中添加这些信息。