2016-02-02 3 views
0

У меня есть основной стандарт на складе ASP.Net 5 (ASP NET Core 1) MVC 6 (MVC Core 1) Контроллер с единственным методом, который вызывает у меня печаль.Контроллер не вызван

Вот рассмотренный метод:

// Get the table data 
[HttpPost("data/{requestedTable}")] 
public IActionResult GetTableData(string requestedTable, [FromForm] DataTableData post) 
{ 
    _logger.LogInformation($"About to process {requestedTable}"); 
    _logger.LogInformation($"Draw {post.Draw}, Start {post.Start}"); 
    if (!SQL.ValidTable(requestedTable)) 
    { 
     return new ErrorObjectResult("Invalid table name specified"); 
    } 

    var count = post.Length; 
    var start = post.Start; 
    var search = post.Search.Value; 
    var draw = post.Draw + 1; 

    var recordsTotal = new SQL() 
      .WithCount() 
      .AllData(requestedTable) 
      .FirstOrDefault()["COUNT"]; 
    var recordsFiltered = new SQL() 
      .WithCount() 
      .WithSearch(search) 
      .WithNavigation() 
      .AllData(requestedTable) 
      .FirstOrDefault()["COUNT"]; 
    var data = new SQL() 
      .WithLimit(count, start) 
      .WithSearch(search) 
      .WithNavigation() 
      .OrderBy(OrderHelper.Convert(post)) 
      .EnableDataTable() 
      .AllData(requestedTable); 

    _logger.LogInformation($"Got: {recordsTotal}, {recordsFiltered}, {data.Count()}"); 

    return new CustomObjectResult(new { 
     draw = draw, 
     recordsTotal = recordsTotal, 
     recordsFiltered = recordsFiltered, 
     data = data 
    }); 
} 

Он работает 100% штрафа на моем Dev системы (Windows 10 Pro, VS 2015 Вт/IIS Express, DNVM 1.0.0-rc1-update1).

Однако, когда я запустил его на Windows Server 2012 R2 через виртуальную машину, я получу 1 успешный запрос на 10-20 неудачных запросов.

Вот пример входа, что я буду получать:

<!-- GOOD REQUEST --> 
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[1] 
     Request starting HTTP/1.1 POST http://<removed>/api/backend/datatable/data/AncillaryShiftReport application/x-www-form-urlencoded; charset=UTF-8 2266 
info: ProdManSys.Middleware.AuthRemapping[0] 
     Auth remap starting 
info: ProdManSys.Middleware.AuthRemapping[0] 
     SID is currently S-1-5-21-xxxxx.... 
info: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker[1] 
     Executing action method ProdManSys.Controllers.Api.Backend.DataTableController.GetTableData with arguments (AncillaryShiftReport, ProdManSys.Controllers.Api.Backend.Helpers.DataTableData) - ModelState is Valid' 
info: ProdManSys.Controllers.Api.Backend.DataTableController[0] 
     About to process AncillaryShiftReport 
info: ProdManSys.Controllers.Api.Backend.DataTableController[0] 
     Draw 1, Start 0 
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[2] 
     Request finished in 0.0016ms 200 
info: ProdManSys.Controllers.Api.Backend.DataTableController[0] 
     Got: 18, 18, 10 
<!-- BAD REQUEST --> 
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[1] 
     Request starting HTTP/1.1 POST http://<removed>/api/backend/datatable/data/AncillaryShiftReport application/x-www-form-urlencoded; charset=UTF-8 2266 
info: ProdManSys.Middleware.AuthRemapping[0] 
     Auth remap starting 
info: ProdManSys.Middleware.AuthRemapping[0] 
     SID is currently S-1-5-21-xxxxx.... 
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[2] 
     Request finished in 0ms 200 

Кто-нибудь сталкивались с аналогичными/Есть любые предлагаемые исправления, которые могли бы решить эту проблему/Были ли отлаживать намеки, связанные с этим?

+0

пожалуйста, проверьте ниже пост. Не уверен, может ли он помочь: http://stackoverflow.com/questions/34985520/asp-net-5-controller-method-cant-receive-json-post-asp-net-4-controller-method –

+0

@BalaSakthis давая ему шанс, даст вам знать, как это происходит. – JosephGarrone

+0

@BalaSakthis вы легенда! Благодаря! – JosephGarrone

ответ

0

Для тех, кто сталкивается с этой проблемой, похоже, что-то не так с [FromForm], изменив это на [FromBody], и преобразование его в JSON с соответствующим типом успешно разрешило эту проблему для меня.

Согласно @BalaSakthis, следующий вопрос решен мой вопрос несколько: ASP.NET 5 Controller method can't receive JSON POST, ASP.NET 4 controller method does