Ninject と WebAPI.All を連携させるのに苦労しています。より具体的に説明します。
まず、WebApi.All パッケージをいじってみましたが、問題なく動作するようです。次に、次の行に次
のように追加しました。RegisterRoutes
Global.asax
routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory(), typeof(ContactsApi)));
したがって、最終結果は次のとおりです。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory(), typeof(ContactsApi)));
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
}
すべて問題ないようですが、ユーザーを特定のアクションにリダイレクトしようとすると、次のようになります。
return RedirectToAction("Index", "Home");
ブラウザの URL は
localhost:789/api/contacts?action=Index&controller=Home
どちらが悪いですか。行を入れ替えたRegisterRoute
ところ、次のようになりました。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory(), typeof(ContactsApi)));
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
}
これでリダイレクトは正常に機能しますが、API アクションにアクセスしようとすると、
Ninject couldn't return controller "api"
絶対に論理的であるというエラーが表示され、そのようなコントローラーはありません。
Ninject を WebApi で動作させる方法についていくつかの情報を検索しましたが、見つかったものはすべて MVC4 または .Net 4.5 のみでした。技術的な問題により、プロジェクトを新しいプラットフォームに移行できないため、このバージョンの有効なソリューションを見つける必要があります。
この答えは実用的な解決策のように見えましたが、プロジェクトを起動しようとすると、コンパイラエラーが発生します
CreateInstance = (serviceType, context, request) => kernel.Get(serviceType);
教えてください:
System.Net.Http.HttpRequestMessage is defined in an assembly that is not referenced
アセンブリに参照を追加することについて何か
System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
次に何をすべきかわかりません.NET 4およびMVC3でwebapiを使用したninjectに関する有用な情報が見つかりませんでした。どんな助けでも大歓迎です。