繁体   English   中英

.NET Core MVC控制器未路由到POST功能

[英].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.csConfigureServices函数中向IoC容器注册服务:

public class Startup
{
    //...
    public void ConfigureServices(IServiceCollection services)
    {
        //...
        services.AddTransient<ITOSResponseService, TOSResponseService>();
        //...  
    }
    //...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM