2015-01-02 2 views
0

Я пытаюсь передать класс с свойством, имеющим список для Restful service через метод Post, используя HTTPContent. Вот мой контроллер Код:Ошибка при передаче списка параметров с помощью HttpContent

protected async Task<T> GetOfflineReport<T>(ReportSettings rSettings) 
      { 

    string postUrl = "http://localhost/Application/ReportingDataService/v1/GetOfflineReport2012"; 

    JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 
    PlatformClient _platform = new PlatformClient(); 
    T result = default(T); 

    using (HttpContent httpContent = new StringContent(jsSerializer.Serialize(rSettings))) 
    { 
    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 

    using (HttpResponseMessage response = await _platform._HttpClient(Session).PostAsync(postUrl, httpContent)) 
    { 
     if (response.IsSuccessStatusCode) 
      result = await response.Content.ReadAsAsync<T>(); 
    } 
    } 
    return (result); 
} 

В описанном выше способе контроллера класса «ReportSettings» выглядит следующим образом:

[DataContract] 
     public class ReportSettings 
     { 

      [DataMember] 
      public string ReportName 
      { 
       get; 
       set; 
      } 

      [DataMember] 
      public string ReportPath 
      { 
       get; 
       set; 
      } 

      [DataMember] 
      public ReportFormat ReportFormat 
      { 
       get; 
       set; 
      } 

      [DataMember] 
      public List<ReportParams> Parameters 
      { 
       get; 
       set; 
      } 
    } 

Когда я передать «reportSettings» парам, как нуль это будет сервис методы. Но когда «reportSettings» передается с помощью списка параметров, он не ударяет по сервисному методу.

Метод обслуживания заключается в следующем:

 [WebInvoke(Method = "POST", UriTemplate = "GetOfflineReport2012")] 
     [OperationContract] 
     IEnumerable<byte> GetOfflineReport2012(ReportSettings reportSettings); 

public IEnumerable<byte> GetOfflineReport2012(ReportSettings reportSettings) 
     { 

       try 
       { 
        var dp = _mDbFactory.GetReportingDataProvider(); 
        var result = dp.GetOfflineReport2012(reportSettings); 
        return result; 
       } 
       catch (Exception ex) 
       { 
        throw _convertToWebFaultException(ex); 
       } 

     } 

Не могли бы вы мне помочь в решении этого вопроса. Как передать значения служб отчетов в службу. Я не получаю никаких исключений, но это не касается службы.

ответ

0

У меня проблема решена. Я передаю значение null для параметра.