找不到与控制器

时间:2018-06-05 19:46:46

标签: c# asp.net .net asp.net-web-api asp.net-web-api-routing

我在现有的web api项目中添加了一个非常简单的新控制器,并获得了#34;没有找到与名为' Filter'过滤器'匹配的控制器匹配的类型。我去http://localhost/ExceptionManagement/Api/Filter时的消息。

我在控制器中使用和不使用Route属性都尝试过它。我在WebApiConfig中使用了默认路由以及显式路由。作为一个实验,我添加了另一个控制器,只是使用Visual Studio默认值并获得尝试连接到新控制器的相同错误消息。

更糟糕的是,我有一个现有的控制器按预期工作,但我无法弄清楚那个控制器是如何不同的。

控制器:

public class FilterController : ApiController
{
    [Route("Api/Filter")]
    public string Get()
    {
        string ret = "Is this thing on?";
        return ret;
    }
}

WebApiConfilg文件:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "ExceptionFilter",
            routeTemplate: "Api/Filter",
            defaults: new { action = "Get", controller = "Filter" },
            constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
        );

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

和Global.asax:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings
            .Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept",
                                          "text/html",
                                          StringComparison.InvariantCultureIgnoreCase,
                                          true,
                                          "application/json"));
    }

0 个答案:

没有答案