【问题标题】:Controller not being invoked控制器未被调用
【发布时间】:2016-05-01 08:49:18
【问题描述】:

我有基本的库存标准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
    });
}

它在我的开发系统(Windows 10 Pro、VS 2015 w/IIS Express、DNVM 1.0.0-rc1-update1)上运行良好 100%。

但是,当我通过虚拟机在 Windows Server 2012 R2 上运行它时,我会在大约 10-20 个失败请求中获得 1 个成功请求。

这是我将收到的示例日志:

<!-- 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 

有没有人遇到过类似的问题/有任何建议的修复方法可以解决这个问题/有任何与此相关的调试提示吗?

【问题讨论】:

  • 请查看以下帖子。不确定是否有帮助:stackoverflow.com/questions/34985520/…
  • @BalaSakthis 试一试,会告诉你进展如何。
  • @BalaSakthis 你的传奇!谢谢!
  • 很高兴你得到了解决方案 :)

标签: c# asp.net-core asp.net-core-mvc


【解决方案1】:

对于遇到此问题的人,[FromForm] 似乎有问题,将其更改为 [FromBody] 并将其转换为相应类型的 JSON 成功为我解决了此问题。

根据@BalaSakthis,以下问题在一定程度上解决了我的问题:ASP.NET 5 Controller method can't receive JSON POST, ASP.NET 4 controller method does

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多