2015-04-17 6 views
0

В моем проекте MyServices у меня есть услуга в TestService.svc.Плохой запрос в RestSharp?

[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); 

Однако, когда я наводил на себя содержимое ответа, я нашел.

На сервере возникла ошибка при обработке запроса. Сообщение об исключении: «Пользователь не авторизовался для этого действия». Подробнее см. Журналы сервера.

В журнале 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

Кажется, что у него отсутствует параметр body.

Если этот параметр установлен, его значение будет отправлено как тело запроса. Принимается только один параметр RequestBody - первый.

Имя параметра будет использоваться в качестве заголовка Content-Type для запроса.

RequestBody не работает в GET или HEAD. Запросы, так как они фактически не отправляют тело.

Если у вас есть параметры GetOrPost, они будут перезаписывать RequestBody - RestSharp не будет их комбинировать, но вместо этого он выведет параметр RequestBody.

Смежные вопросы