安装fluentvalidation.webapi后无法命中重复的控制器路由

本文关键字:控制器 路由 webapi fluentvalidation 安装 | 更新日期: 2023-09-27 18:01:10

最近我安装了Fluent

我有两个项目——一个是MVC项目,另一个是WebApi项目。两者都有相同的控制器名为Deals控制器。在fluent安装后,我遇到了web api请求无法定位任何DealsController的问题。

在MVC的Gloabal-asax-Application_Start方法中:

protected void Application_Start(object sender, EventArgs e)
{
            System.Web.Http.GlobalConfiguration.Configure(CompanyName.Service.WebApiConfig.Register);
            CompanyName.RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}

这两个语句分别注册mvc和webapi的路由。

我有DealsController,它在两个项目(MVC和WebApi(中都有相同的名称。

这是MVC的DealsController:

public class DealsController : System.Web.Mvc.Controller
{
    public DealsController()
    {
    }
}

这是WebApisDeals控制器:

public class DealsController : System.Web.Http.ApiController
{
    public DealsController()
        {
        }
    [Route("api/advantage/getDeals/")]
    public IHttpActionResult GetDeals([FromUri] CompanyName.Entity.Deals.Filters filter)
    {
    }
}

从nuget安装fluentvalidation.webapi后,当我使用此web api的方法时:http://localhost/api/advantage/getDeals/?cityId=2&sc=0&所以=1&pn=1

我得到以下错误:

"消息":"未找到与请求URI匹配的HTTP资源"http://localhost/api/advantage/getDeals/?cityId=2&sc=0&所以=1&pn=1'。",

"MessageDetail":"未找到与名为"advantage"的控制器匹配的类型。">

我不知道安装fluent验证web api包后到底发生了什么。我刚刚安装了fluentvalidation.webapi包,它给了我一些与cors相关的错误,所以我进一步安装了Microsoft.AspNet.webapi.cors.

如果我将我的web api控制器(dealscontroller(重命名为其他名称,它运行良好。

但我不明白这里到底发生了什么,也不明白fluentvalidation.webapi的更新在我的解决方案和其他api中还有什么其他风险。

安装fluentvalidation.webapi后无法命中重复的控制器路由

我认为当您安装FluentValidation.WebAPI时,它正在升级Microsoft.AspNet.WebApi或其他Web API库(尽管这不应该发生(。如果没有,Microsoft.AspNet.WebApi.Cors肯定会更改版本(如果您没有使用最新版本(。

因此,您需要确保Web API库的版本在MVC项目和类库中都是相同的。