この問題はかなり一般的ですが、私が読んだことのある解決策は私の場合は一度もありませんでした。私は、既存のMVCプロジェクトにApiControllerを追加しようとしています。Asp.net WebApi: 'xxxx'というコントローラーに一致するタイプが見つかりませんでした。
私はhttp://localhost:51362/api/testで追加コントローラにアクセスしようとすると、私はこのエラーを取得:{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:51362/api/test'.","MessageDetail":"No type was found that matches the controller named 'test'."}
私のプロジェクトは以下のNuGetパッケージが含まれています
- Microsoft.AspNet.Mvc 5.2.3
- Microsoft.AspNet.WebApi 5.2.3
- Microsoft.AspNet.WebApi.Client 5.2.3
- Microsoft.AspNet.WebApi.Core 5.2.3
- Microsoft.AspNet.WebApi.WebHost 5.2.3
私のGlobal.asax.cs(抜粋):
RouteTable.Routes.Clear();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteTable.Routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
マイWebApiConfig.cs:
using System.Web.Http;
namespace End.Web
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
私の新しいですコントローラ:
using System.Web.Http;
namespace End.Web.Controllers
{
public class TestController : ApiController
{
public string Get()
{
return "ok";
}
}
}
属性ルーティングを成功させようとしました。私がやりたいことは本当にシンプルなようです。私は明白な何かを欠いていますか
あなたは '[HTTPGET]' '属性の取得()'アクションを設定しようとしたことがありますか? –
@Roma Web API v2は、メソッドの名前に基づいて自動的にHTTP動詞をマッピングします。これは不要です。 – ADyson
WebApiConfig.Registerメソッドが実際にヒットしたことを再確認できますか? – CoolBots