我已经部署了我的服务并将Visual Studio连接到流程以在一个Visual Studio实例中进行调试,而在另一个我有一个客户端控制台测试应用程序,我在调试模式下运行,我可以看到我调用的两个服务方法在调试器中,但是在我故意抛出异常的第二个中,我从未看到在ErrorHandlerBehavior中调用的代码。 我对ErrorHandlerBehavior的注册不正确吗?
我想知道我的服务配置中是否需要有行为扩展吗?
我将此全局异常处理基于此example
这是我的服务程序主要方法中的容器注册:
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));
答案 0 :(得分: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>());