安装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
时,它正在升级Microsoft.AspNet.WebApi
或其他Web API库(尽管这不应该发生(。如果没有,Microsoft.AspNet.WebApi.Cors
肯定会更改版本(如果您没有使用最新版本(。
因此,您需要确保Web API库的版本在MVC项目和类库中都是相同的。