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

pobjuy32  于 8个月前  发布在  Postman
关注(0)|答案(1)|浏览(110)

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

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

我给 Postman 寄了一份请求

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

问题:x1、x3和x4正在接收它们的值,但x2没有接收任何值。我把break point写在这条线上:

解决方案不起作用

  • 我这样声明方法:
public int MyFunc(int x1, Dictionary<string, object> x2 , string x3 , Guid x4)
  • 我把字典写成这样:"IsRevisit": "true"

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

项目信息

  • WCF服务
  • .net framework 4.6
  • Visual Studio 2022版本17.6.2
o2gm4chl

o2gm4chl1#

要捕获您得到的特定错误,您可以使用WCF Trace Logging
我们需要知道我们传递的是什么类型,以便它可以在WCF中反序列化该对象。所以WCF是强类型的。
public int findDuplicate(int x1,int x2,int x3,int x4)
WCF将抛出异常,因为public int MyFunc(Dictionary<string, object> x2)捕获所有WCF无法识别的类型。
你可以像下面这样定义一个方法:

[OperationContract]
     int Method(MyClass myClassObject);

像这样写Dictionary<string,myClassObject>。这样就行了。

相关问题