0

我已经部署了我的服务并将 Visual Studio 附加到进程以在一个 Visual Studio 实例中进行调试,而在另一个实例中我有一个在调试模式下运行的客户端控制台测试应用程序,我可以看到我调用的两种服务方法都在调试器中执行,但是在我故意抛出异常的第二个中,我根本看不到 ErrorHandlerBehavior 中的代码被调用。我对 ErrorHandlerBehavior 的注册不正确吗?

我想知道我是否需要为此在我的服务配置中有一个行为扩展?

我的全局异常处理基于此示例

这是我的服务程序主方法中的容器注册:

container.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero);

    container
        .Register(Component.For<WcfProtoType.IServiceProtoType>()
            .ImplementedBy<WcfProtoType.ProtoTypeService>()
            .Named("ProtoTypeService")
            .AsWcfService( new DefaultServiceModel()
                .AddEndpoints(WcfEndpoint
                    .BoundTo(new BasicHttpBinding(BasicHttpSecurityMode.None))
                    .At(baseUrl)

                    ).PublishMetadata(o => o.EnableHttpGet())),Component.For<ServiceBase>().ImplementedBy<MyService>(),
                    Component.For<ErrorHandlerBehavior>().Attribute("scope").Eq(WcfExtensionScope.Services));
4

1 回答 1

0

我查看了Castle Windsor的源代码,据我所知 EndPointBehavior 需要先像这样注册:

container
    .Register(Component.For<ErrorHandlerBehavior>().Attribute("scope").Eq(WcfExtensionScope.Services),
        Component.For<WcfProtoType.IServiceProtoType>()
            .ImplementedBy<WcfProtoType.ProtoTypeService>()
            .Named("ProtoTypeService")
            .AsWcfService( new DefaultServiceModel()
                .AddEndpoints(WcfEndpoint
                    .BoundTo(new BasicHttpBinding(BasicHttpSecurityMode.None))
                    .At(baseUrl)
                    ).PublishMetadata(o => o.EnableHttpGet())),Component.For<ServiceBase>().ImplementedBy<MyService>());
于 2012-11-16T22:51:21.650 回答