WCF 方法的字典输入参数未接收值

问题描述 投票:0回答:1

我声明了一个这样的方法:


public int MyFunc(int x1, Dictionary<string, string> x2 , string x3 , Guid x4)

我用这个正文从邮递员发送了一个请求:

{
   
"x1" : "1",
"x2" : {
        "IsRevisit": true,
        "key2": "value2"
       },
"x3" : "test",
"x4" : "A3E133EA-A692-482A-837A-0BDC9F2D0536"
}

问题: x1、x3 和 x4 正在接收它们的值,但 x2 没有接收到任何值。我在线上放置了断点:

解决方案不起作用

  • 我这样声明方法:

public int MyFunc(int x1, Dictionary<string, object> x2 , string x3 , Guid x4)

  • 我发送了这样的字典:
     "IsRevisit": "true"

最终,我声明了一个类似于字典的结构来完成我的意图。但是,我在接收值时遇到了这个问题。为什么会这样?

项目信息

  • WCF服务
  • .net框架4.6
  • Visual Studio 2022 版本 17.6.2
c# wcf postman .net-4.6
1个回答
0
投票

要捕获您遇到的特定错误,您可以使用 WCF 跟踪日志记录

我们需要知道我们传递的是什么类型,以便它可以在 wcf 中反序列化该对象。所以 WCF 是强类型的。

public int MyFunc(int x1, 字典 x2 , 字符串 x3 , 指南 x4)

WCF 将抛出异常,因为

public int MyFunc(Dictionary<string, object> x2)
捕获 WCF 无法反序列化的所有定义类型。

您可以定义如下方法:

 [OperationContract]
     int Method(MyClass myClassObject);

然后这样写

Dictionary<string,myClassObject>
。然后就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.