プロジェクトをWCFWebAPIからASP.NETWebAPIに変換しています-MSに感謝します:(
セルフホスティング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(object)を使用すると少し汚れた感じがしますが、私が知る限り、これは機能しているようです。
私が今抱えている問題は、それを実行しようとすると、登録されなくなったバインディングがたくさんあることです(つまりIHttpContollerFactory
、ILogger
など)。
1つずつ確認して、すべての「デフォルト」の依存関係を再登録する必要がありますか?デフォルトがデフォルトの依存関係リゾルバーに登録されているのは奇妙に思えますが、新しい依存関係リゾルバーが設定されたときにデフォルトを再登録する簡単な方法がわかりません。のようなものの場合、バインディングを作成するためILogger
にデフォルトにアクセスすることさえできないようです。System.Web.Http.Common.Logging.DiagnosticLogger
私は何かが足りないのですか?