После публикации в IIS 7 метод Web Api 2 Post создает внутреннюю ошибку сервера?Что мне делать? - PullRequest
0 голосов
/ 12 июня 2018

В моем веб-проекте ASP.NET у меня есть контроллер API, в котором есть метод post, подобный этому.

[RoutePrefix("api/token")]
public class TokenController : ApiController
{
    [HttpPost]
    [Route("")]
    public IHttpActionResult CustomToken ([FromBody] UserDto userDto)
    {
        .....
        return Ok("success");
    }

}

Теперь в Visual Studio этот контроллер API работает нормально, возвращает «успех» с кодом состояния 200, но когда я публикую его в IIS, это создает исключение 500 внутренних серверов.Я использовал ведение журнала здесь, и во всем коде внутри метода POST исключение не создается.

Обновление: в файле запуска проекта API я использовал следующую конфигурацию:

private void ConfigureWebApi(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    config.EnableCors();
    config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

    var jsonFormatter = 
            config.Formatters.OfType<JsonMediaTypeFormatter>().First();

   jsonFormatter.SerializerSettings.ContractResolver 
            = new CamelCasePropertyNamesContractResolver();
}

1 Ответ

0 голосов
/ 12 июня 2018

Используйте Fiddler или встроенные в ваш браузер средства отладки (F12) для проверки трафика при выполнении вызова API.
ASP.Net Web API должен возвращать пост-ответ вернуться в HTML-форму с сообщением об исключении.Если он не возвращает правильное значимое сообщение об ошибке, возможно, в вашем файле web.config есть <customErrors mode="on">.Это должно быть установлено на off, пока вы пытаетесь отладить проблему.

...