私はASP.NETのWeb APIにWCFのWeb APIからプロジェクトを変換しています - 感謝MS :(ASP.NETのWeb API(セルフホスト)+ Ninject - デフォルトのバインディング
セルフホスティングPOCコード:
static void Main(string[] args)
{
var kernel = new StandardKernel();
const string baseAddress = "http://localhost:8080";
var config = new HttpSelfHostConfiguration(baseAddress);
config.ServiceResolver.SetResolver(new NinjectServiceLocator(kernel));
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new {id = RouteParameter.Optional});
var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
Console.WriteLine("The server is running....");
Console.ReadLine();
}
私は、依存リゾルバとしてNinjectを登録していますこれを達成するために、私はそれを登録するCommonServiceLocator.NinjectAdapter
を使用しています:。
config.ServiceResolver.SetResolver(new NinjectServiceLocator(kernel));
これは、限り、それは少し感じているが、私が言うことができるように動作するようですSetResolver(オブジェクト)を使って汚い
私が今問題としているのは、それを実行しようとすると、もはや登録されていないバインディングがたくさんあるからです(すなわち、IHttpContollerFactory
、など)。
私は1つずつ進み、すべての "デフォルト"依存関係を再登録する必要がありますか?既定の依存関係リゾルバに既定値が登録されているのは奇妙に思えますが、新しい依存関係リゾルバが設定されている場合、既定値をすぐに再登録する方法はわかりません。のようなものについては、デフォルトのSystem.Web.Http.Common.Logging.DiagnosticLogger
にアクセスしてバインディングを作成することさえできないようです。
何か不足していますか?
、問題がNinjectServiceLocatorマッピング例外をスローしていることを:私は今の私が使用しているNinjectの大きい知識を持っている人が作成した「適切な」1があるだろうと確信していますが見つかりません。私はさらに調査します。 –
@Discofunkそうですね。しかし、フレームワークはあなたのためにその例外を飲み込むでしょう。 –
私は参照してください。デバッグVS2010で実行されている場合、例外が発生しますが、その後は飲み込まれているようです。 –