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

时间:2016-08-06 09:42:04

标签: c# asp.net asp.net-mvc asp.net-web-api fluentvalidation

最近我安装了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中可能带来的其他风险。

1 个答案:

答案 0 :(得分:1)

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

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