我正在开发wcf服务,我希望根据父类别选择返回子类别。
这是我的界面:
[ServiceContract]
public interface iServiceRegistration
{
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, BodyStyle =WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, Method = "GET")]
IEnumerable<SelectListItem> GetSubCategories(int categoryId);
}
public class Service : iServiceRegistration
{
public IEnumerable<SelectListItem> GetSubCategories(int categoryId)
{
//code
}
}
我正在使用mozilla的REST客户端来测试这项服务。现在,当我从其他客户端调用此方法时,这样:
{
"categoryId": "1"
}
然后0进入我的参数categoryId。
谁能告诉我这个问题是什么?????答案 0 :(得分:1)
您指定的方法为GET
(另外,请勿使用[WebInvoke(Method = "GET")]
;请改用[WebGet]
。 GET请求中的参数在查询字符串中传递,而不是在请求正文中传递。您应该更改客户端(REST客户端)以发送以下请求:
GET http://your-service/endpoint/GetSubCategories?categoryId=1
或者更改方法以接受POST
次请求:
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStype = WebMessageBodyStyle.WrappedRequest)]
IEnumerable<SelectListItem> GetSubCategories(int categoryId);
并在POST电话的正文中发送请求:
POST http://your-service/endpoint/GetSubCategories
Content-Type: application/json
Content-Length: XXX
{"categoryId":1}
答案 1 :(得分:0)
您错过了 UriTemplate ,在get方法中,您需要在url中传递参数。 所以你的电话应该是