Web API プロジェクトで AttributeRouting を使用しています。Web API の AttributeRouting をインストールしました。Enum ルート制約を定義したいので、AttributeRoutingHttpConfig 構成を次のようにセットアップします。
using System.Reflection;
using System.Web.Http;
using AttributeRouting.Web.Http.Constraints;
using AttributeRouting.Web.Http.WebHost;
using MyProject.Data.Models;
[assembly: WebActivator.PreApplicationStartMethod(typeof(PhantasyTour.AttributeRoutingHttpConfig), "Start")]
namespace MyProject
{
public static class AttributeRoutingHttpConfig
{
public static void RegisterRoutes(HttpRouteCollection routes)
{
routes.MapHttpAttributeRoutes(
config =>
{
config.AddRoutesFromAssembly(Assembly.GetExecutingAssembly());
config.InlineRouteConstraints.Add("ListType", typeof(EnumRouteConstraint<ListType>));
});
}
public static void Start()
{
RegisterRoutes(GlobalConfiguration.Configuration.Routes);
}
}
}
アプリケーションを起動すると、すぐに次のエラーが表示されます。
制約 "AttributeRouting.Web.Http.Constraints.EnumRouteConstraint`1[[MyProject.Data.Models.ListType, MyProject.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" は System.Web を実装する必要があります。 Routing.IRouteConstraint
私は AttributeRouting.Web.Http.Constraints.EnumRouteConstraint のソース コードを見て、おそらく MVC 名前空間の IRouteConstraint に相当する WebAPI である IHttpRouteConstraint を実装していることを確認しました。
私が間違っていることと、これを機能させる方法を誰かが知っていますか?
アップデート:
完全に空の Web アプリケーションを作成し、WebAPI 参照用に WebAPI と AttributeRouting のみを追加しようとしました。MVC アセンブリへの参照がまったくないにもかかわらず、同じエラー メッセージが表示されます。ただし、完全に機能する AttributeRouting.Web.Constraints 名前空間に別の EnumRouteConstraint があることを発見しました。Core AttributeRouting アセンブリにあるため、MVC 固有ではないようです。1つしか機能しないのに、2つの異なる EnumRouteConstraint クラスがある理由を知りたいです。しかし、それはまた別の質問です。