在我的MyServices
项目中,我的服务位于TestService.svc
。
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GenerateMetadata/{FacilityID}")]
public List<dynamic> GenerateMetadata(string FacilityID)
{
然后在代码中向它发送请求。我有:
[TestMethod]
public void MetadataServiceShouldReturnExpected()
{
var client = new RestClient("http://localhost/MyServices/TestService.svc/");
var request = new RestRequest("GenerateMetadata/{FacilityID}", Method.POST);
request.AddUrlSegment("FacilityID", "888");
var response = client.Execute(request);
然而,当我将鼠标悬停在回复内容上时,我找到了。
服务器在处理请求时遇到错误。异常消息是“未对此操作授权的用户”&#39;。有关详细信息,请参阅服务器日志。
IIS日志没有足够的信息。就像:
`2015-04-17 19:13:52 ::1 POST /MyServices/TestService.svc/GenerateMetadata/163 - 80 - ::1 RestSharp/105.0.1.0 400 0 0 391`
请帮忙。
答案 0 :(得分:0)
似乎缺乏身体参数。
如果设置了此参数,则其值将作为请求的正文发送。只接受一个RequestBody参数 - 第一个。
参数的名称将用作请求的Content-Type标头。
RequestBody不适用于GET或HEAD请求,因为它们实际上并不发送正文。
如果你有GetOrPost参数,它们将覆盖RequestBody - RestSharp不会合并它们,但它会抛弃RequestBody参数。