[英].NET Core MVC Controller not routing to POST function
我在.NET Core MVC REST服务中创建了一个新控制器,并且在调用API时未路由到POST函数。
我已经拥有与该控制器完全相同的格式的现有控制器,我无法确定为什么未调用服务函数。 该请求始终返回通用500错误。
网址: https:// address:port / api / TOSResponse
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using MyProject.ActionFilters;
using MyProject.Common.Exceptions;
using MyProject.Services;
namespace MyProject.Controllers
{
[ServiceFilter(typeof(KeyValidatorFilter))]
[Route("api/[controller]")]
public class TOSResponseController : Controller
{
private ITOSResponseService _tosResponseService;
public TOSResponseController(ITOSResponseService tosResponseService)
{
_tosResponseService = tosResponseService;
}
[HttpPost]
public IActionResult Post([FromBody] List<Models.TermsOfServiceResponse> tosResponses)
{
try
{
_tosResponseService.InsertOrUpdate(tosResponses);
return new OkResult();
}
catch (PLException ex)
{
return new BadRequestObjectResult(ex.ErrorValue);
}
}
}
}
您添加为ServiceFilter的KeyValidatorFilter中可能存在此问题。 这将首先受到打击,并可能在击中您的控制器之前向用户抛出500。 您是否在其他控制器中使用此过滤器? 尝试在调试模式下的过滤器中添加断点,然后看看会发生什么。
我发现了问题。 由于无法解析对ITOSResponseService
的引用, ITOSResponseService
甚至没有实例化Controller,我忽略了在Startup.cs
的ConfigureServices
函数中向IoC容器注册服务:
public class Startup
{
//...
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddTransient<ITOSResponseService, TOSResponseService>();
//...
}
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.