Развертывание ASP.NET MVC 4 Web API - PullRequest
2 голосов
/ 13 марта 2012

Проблема с развертыванием веб-API ASP.NET MVC 4

Я пытаюсь развернуть сайт ASP.NET MVC 4 Web API.Все работает нормально, но если я вызываю сервер извне и возвращаю HTTP-статус 400 и выше, ответ принимает веб-сервер.

Локальный вызов на сервере работает нормально.

Пример:

Work fine:
 http:// myTestServer.se/Test/api/Test/200 
 http:// myTestServer.se/Test/api/Test/399 

Does not work, the Web server takes over the response: 
 http:// myTestServer.se/Test/api/Test/400 
 http:// myTestServer.se/Test/api/Test/599 
      For those cases where there is an Error Pages is returned. For an invalid code is returned ”The custom error module does not recognize this error.”

if I make the calls locally on the server, it works fine:
 http://localhost/Test/api/Test/400
 http://localhost/Test/api/Test/599

Мой простой тестовый код вернет полученный идентификатор в виде статуса HTTP.

// GET /api/values/200
public HttpResponseMessage<string> Get(int id)
{
    try
    {
        HttpStatusCode StatusCode = (HttpStatusCode)id;
        return new HttpResponseMessage<string>("Status Code : " + StatusCode.ToString(), StatusCode);
    }
    catch {
        return new HttpResponseMessage<string>("Unable to convert the id", HttpStatusCode.OK);
    }
}

Ответы [ 2 ]

5 голосов
/ 14 марта 2012

Это так называемая проблема «умных сообщений об ошибках». IIS захватывает ваше сообщение об ошибке и заменяет его собственным. Типичный обходной путь - установить для TrySkipIisCustomErrors значение true:

Response.TrySkipIisCustomErrors = true;

Я не проверял, будет ли это работать с веб-API. Вы можете прочитать больше о проблеме здесь и здесь .

0 голосов
/ 18 марта 2014

Вместо того, чтобы возвращать новое HttpResponseMessage , используйте Запрос так, чтобы Ответ был полностью гидратирован и вернулся через IIS без изменений.

return Request.CreateResponse(HttpStatusCode.OK, "Status Code : " + StatusCode.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...