我用这样的帖子制作了我的方法:
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
List<Human> GetHuman(UserEnteredName humanName);
UserEnteredName类只有一个属性 - string。
它有效。但是,我需要让它得到,而不是发布。
我试过这个:
[WebInvoke(Method= "GET", UriTemplate = "GetHuman?username={John}",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
但它不起作用。我需要改变什么?
答案 0 :(得分:1)
根据您的UriTemplate
,您的方法必须看起来像
Human GetHuman(string John)
我怀疑你错误地在UriTemplate
中添加了一个可能的参数值。尝试像
[WebInvoke(Method= "GET", UriTemplate = "GetHuman?username={userName}",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
Human GetHuman(string userName)
此外,对于GET
,您可以使用稍微清晰的WebGetAttribute
。
我会更改您的方法以获取string
参数并在方法正文中构造UserEnteredName
实例。如果它使用UserEnteredName
,则可以使用TypeConverterAttribute
类型作为参数,但我从未这样做过,所以我不能说它是多么容易(或不是)。请参阅WCF Web HTTP Programming Model Overview,特别是 UriTemplate查询字符串参数和网址部分。