2016-07-13 2 views
1

В приложении WebAPI я бросаю и исключаю, которое поймано. Затем я делаю это:Почему код ответа возвращает другой код?

catch (Exception e) 
{ 
    return Request.CreateResponse(HttpstatusCode.BadRequest); 
} 

На стороне вызывающего абонента сообщение является кодом состояния 400, как ожидалось.

Когда я делаю это вместо:

catch (Exception e) 
{ 
    return Request.CreateResponse(HttpstatusCode.BadRequest, myFile); 
} 

где myFile является HttpPostedFile, абонент получает 500 код. HttpstatusCode.BadRequest == 400. Как вызывающий абонент получает 500 во втором сценарии?

+0

Переменная myFile имеет тип HttpPostedFile? Попробуйте этот новый поток StreamReader (myFile.InputStream) .ReadToEnd(); 'вместо того, чтобы просто передавать myFile в качестве второго аргумента. – 10100111001

+0

Эта строка выполняется, но, разумеется, содержимое смехотворно. – 4thSpace

+0

Можете ли вы опубликовать фактический файл и ответ на тарабарщину? – 10100111001

ответ

0

Вместо CreateResponse: Use: => Назначить Response.StatusCode = StatusCodes.Status400BadRequest; будет автоматически возвращать статус 400. OR Возвращает следующий объект как возвращает новый HttpStatusCodeResult (StatusCodes.Status400BadRequest);

+0

Где именно "Только назначить"? – 4thSpace

+0

В методе контроллера – ravindra

+0

просто присвойте значения свойству Response.Statuscode. – ravindra