2015-02-25 3 views
0

В моем приложении я пытаюсь использовать обработку исключений. То, что я пытаюсь сделать, - создать отдельный класс и расширить его от HttpResponseException.Web Api Обработка исключений

Это код, который я не написал до сих пор,

public class ApiExceptions : HttpResponseException 
{ 
    public ApiExceptions(string reason, HttpStatusCode code) 
    { 
     var response = new HttpResponseMessage 
     { 
      StatusCode = code, 
      ReasonPhrase = reason, 
      Content = new StringContent(reason) 
     }; 
     throw new HttpResponseException(response); 
    } 
} 

Но я получаю эту ошибку,

'System.Web.Http.HttpResponseException' does not contain a constructor that takes 0 arguments 

Я действительно новичок в обработке исключений в C#. Я был бы очень признателен за помощь в этом отношении.

ответ

2

следующий код должен работает

: основание (...)

Если опустить вызов базового конструктора он будет автоматически вызывать базовый по умолчанию конструктор и HttpResponseException не делает имеют без аргументов.

public class ApiExceptions : HttpResponseException 
     { 
      public ApiExceptions(string reason, HttpStatusCode code):base(code) 
      { 
       var response = new HttpResponseMessage 
       { 
        StatusCode = code, 
        ReasonPhrase = reason, 
        Content = new StringContent(reason) 
       }; 
       throw new HttpResponseException(response); 
      } 
     } 

во всяком случае я не знаю, почему вам нужно продлить HttpResponseException

3

HttpResponseException класс has two constructors defined, оба из которых требуют значение:

HttpResponseException(HttpResponseMessage) 
HttpResponseException(HttpStatusCode) 

Поскольку ваш ApiExceptions класс наследует от HttpResponseException, он должен предоставить совместимый конструктор. Как и все классы, это возвращает HttpResponseException, ему не кажется необходимым наследовать этот класс вообще.

+0

Можете ли вы привести пример того, как расширить этот класс? – mohsinali1317

+0

Зачем вам нужно расширять класс? – stuartd

+0

теперь, когда я думаю, он чувствует, что мне это не нужно. – mohsinali1317

0

Если вы хотите, чтобы полученные формы HttpResponseException вы должны использовать код, подобный этому: В примере исключение подгоняет, которые возвращают BadRequest тип исключение и пользовательское сообщение.

public class HttpResponseBadRequestException: HttpResponseException 
{ 
    /// <summary> 
    /// Basic 
    /// </summary> 
    public HttpResponseBadRequestException() 
     : this(string.Empty) 
    { 
    } 

    /// <summary> 
    /// Specific Constructor. Use this to send a Bad request exception 
    /// with a custom message 
    /// </summary> 
    /// <param name="message">The message to be send in the response</param> 
    public HttpResponseBadRequestException(string message) 
     : base(new HttpResponseMessage(HttpStatusCode.BadRequest) { 
      Content = new StringContent(message) }) 
    { 
    } 
} 
Смежные вопросы