WebServiceHost で Ninject を使用する適切な方法は何ですか (IIS でホストする場合)
.svc ファイルがなく、不要であることに注意してください。だから私は拡張子のないURLを持っています。サービスにレポなどを注入するために Ninject を使用しています。それが機能している間、以前の方法を思い出せず、現在の方法は間違っています-実際には自己ホスト型のように機能しています-サービスが IIS パイプラインに参加する必要があります (同じポートを使用し、アプリケーションプール)...
App_Start フォルダーに NinectWebCommon.cs を作成した Ninject.Extensions.WCF への参照を追加しました。その中で、次のようにサービスを配線しています(ただし、URL/ポートを指定したくないので、適切なライフサイクルに参加させたいです)
private static void RegisterServices(IKernel kernel)
{
var port = 8080;
var uri = new Uri(String.Format("http://{0}:{1}/api", Environment.MachineName, port));
var baseAddr = new Uri[] { uri };
var binding = new WebHttpBinding(WebHttpSecurityMode.None);
var endPoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(MyServiceClassHere))
, binding, new EndpointAddress(uri));
kernel.Bind<IProjectRepository>().To<MyRepo>();
kernel.Bind<WebServiceHost>().To<NinjectWebServiceHost>()
.WithConstructorArgument("serviceType", typeof(MyServiceClassHere))
.WithConstructorArgument("baseAddresses", baseAddr);
var webBehavior = new WebHttpBehavior() { HelpEnabled = true };
endPoint.Behaviors.Add(webBehavior);
_host = kernel.Get<WebServiceHost>();
_host.AddServiceEndpoint(endPoint);
_host.Open();
}
Ninject を使用してサービスを接続するためのベスト プラクティスを教えてください。
前もって感謝します。