最近我安装了Fluent
我有两个项目 - 一个MVC和其他Web Api项目。两者都有相同的控制器名为Deals控制器。在流畅的安装之后,我遇到了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和web api注册路由。
我有DealsController,它在两个项目中都有相同的名称(MVC和Web Api)。
这是MVC的DealsController:
public class DealsController : System.Web.Mvc.Controller
{
public DealsController()
{
}
}
这是Web Apis Deals控制器:
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&so=1&pn=1
我收到以下错误:
“消息”:“找不到与请求URI'http://localhost/api/advantage/getDeals/?cityId=2&sc=0&so=1&pn=1'匹配的HTTP资源。”,
“MessageDetail”:“找不到与名为'advantage'的控制器匹配的类型。”
我不知道在安装流畅的验证web api包之后究竟发生了什么。我刚刚安装了fluentvalidation.webapi包,它给了我一些与cors相关的错误,所以我进一步安装了Microsoft.AspNet.WebApi.Cors。
如果我将我的web api控制器(dealscontroller)重命名为其他名称,它可以正常工作。
但我不明白这里究竟发生了什么,以及fluentvalidation.webapi更新在我的解决方案和其他api中可能带来的其他风险。
答案 0 :(得分:1)
我认为在安装FluentValidation.WebAPI
时,它正在升级Microsoft.AspNet.WebApi
或其他Web API库(尽管这不应该发生)。如果不是,Microsoft.AspNet.WebApi.Cors
肯定会改变版本(如果你没有使用最新版本)。
因此,您需要确保MVC项目和类库中的Web API库版本相同。