構成ファイルで serviceActivations を設定することにより、.svc ファイルを使用せずにサービスをホストできる WCF 4.0 の機能が気に入っています。デフォルトのサービス ファクトリを使用するとうまく機能しますが、依存関係が適切に注入されるように、AutofaServiceHostFactory を使用して同じことをしようとしています。私が試したすべてのシナリオで、サービスにアクセスしようとすると、まだこのエラーが発生しました。 WCF 用に構成されたサービス 'WCFAutofacWiring.MyService' は、Autofac コンテナーに登録されていません。空の asp.net Web サイトでサービスをホストしています。これが私がしたことです:
Web.config:
<serviceHostingEnvironment>
<serviceActivations>
<add factory="Autofac.Integration.Wcf.AutofacServiceHostFactory"
relativeAddress="~/WASCurrentTime.svc"
service="WCFAutofacWiring.MyService" />
</serviceActivations>
</serviceHostingEnvironment>
次に、Autofac のドキュメント ( Autofac WcfIntegration )に記載されているように、 app_code フォルダーにファイルを配置して依存関係を登録し、サービスの開始時にコードが呼び出されることをデバッガーで確認しました。
public static class AppStart
{
public static void AppInitialize()
{
AutofacHostFactory.Container = new AutofacBootstrapper().Configure();
}
}
最後に、ここに私の登録があります:
public class AutofacBootstrapper
{
public IContainer Configure()
{
var builder = new ContainerBuilder();
// register types
builder.Register<ILanguageProvider>(x => new MyLanguageProvider("en-US"));
builder.RegisterType<MyService>();
return builder.Build();
}
}
私のサービスは、serviceActivation の代わりに .svc ファイルを使用すると完全に機能しますが、web.config で指定できるファクトリをセットアップすることが唯一の理由である場合、.svc ファイルを作成するのは無駄だと思います。
何か案が ?
ありがとう