簡體   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