我一直在努力获取RESTful WCF服务,以接受JSON作为参数并返回一些JSON。
这是我的服务:
[OperationContract] [WebInvoke( Method="POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Authenticate")] public AuthResponse Authenticate(AuthRequest data) { AuthResponse res = new AuthResponse(); if (data != null) { Debug.WriteLine(data.TokenId); res.TokenId = new Guid(data.TokenId); } return res; }
当我通过{AuthRequest:{TokenId =“ some guid”}}时,上述方法会将 数据 设置为null。
如果我将方法的BodyStyle设置为Bare,则 数据 设置正确,但是我必须从JSON中删除{AuthRequest}(我并不是很想这样做)。有什么方法可以使WrappedRequests与{AuthRequest:{TokenId =“ some guid”}}一起使用作为JSON?
谢谢。
包装器的名称不是参数 类型 ,而是参数 名称 。如果您发送它,{"data":{"TokenId":"some guid"}}它应该可以工作。
{"data":{"TokenId":"some guid"}}
或者,如果要使用参数名称以外的其他名称,则可以使用[MessageParameter]属性:
[MessageParameter]
[OperationContract] [WebInvoke( Method="POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Authenticate")] public AuthResponse Authenticate([MessageParameter(Name = "AuthRequest")] AuthRequest data)