使用WAS将Autofac与WCF服务一起使用

我喜欢通过在配置文件中设置serviceActivations来托管没有.svc文件的服务的WCF 4.0function。 它使用默认服务工厂工作得很好但现在我正在尝试使用AutofaServiceHostFactory执行相同操作,因此我的依赖项将被正确注入。 在我尝试的所有场景中,当我尝试访问服务时仍然遇到此错误: 为WCF配置的服务“WCFAutofacWiring.MyService”未向Autofac容器注册 。 我在一个空的asp.net网站上托管我的服务。 这是我做的:

Web.config:

     

然后,我在app_code文件夹中放置一个文件来注册我的依赖关系,如Autofac文档( Autofac WcfIntegration )中所述,我向调试器确认在服务启动时调用了代码:

 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(x => new MyLanguageProvider("en-US")); builder.RegisterType(); return builder.Build(); } } 

如果使用.svc文件而不是serviceActivation,我的服务可以正常工作但是如果唯一的原因是设置我可以在web.config中指定的工厂,我发现创建.svc文件会很浪费。

任何的想法 ?

谢谢

根据Autofac源代码 ,如果具有给定字符串(来自config)的键控分辨率或使用给定字符串的Type.GetType的类型化分辨率失败,则抛出exception。

在您的情况下, Type.GetType方法可能返回null因为您尚未在配置中指定Type.AssemblyQualifiedName

尝试获取typeof(MyService).AssemblyQualifiedName并将其插入到配置中。