gpt4 book ai didi

wcf - 向 WCF REST 服务添加全局错误处理

转载 作者:行者123 更新时间:2023-11-30 23:46:14 26 4
gpt4 key购买 nike

我有一个 WCF/REST Web 服务,我正在尝试向其中添加全局异常处理程序。我正在标准 .NET 网站中寻找类似于 Application_Error 事件的内容。

我发现了很多关于使用 IErrorHandler 和 IServiceBehavior 的信息,例如这里的详细信息:http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx#Y1479

这似乎是我所需要的,但我发现的每个示例都假定服务是在 web.config 中定义的。我没有这样做 - 我正在使用 RouteTables,在 global.asax 中配置,如下所示:

 public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}

private void RegisterRoutes()
{
// Edit the base address of Service1 by replacing the "Service1" string below

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHost2Factory(), typeof(myService)));


}

那么,鉴于此,我该如何配置我的自定义 IErrorHandler 和 IServiceBehavior?鉴于我使用的是 RouteTable 而不是通过 web.config 配置它,我是否走在正确的轨道上?我对 WCF 很陌生....

最佳答案

您的 IServiceBehaviour 的接线可以通过创建自定义来实现 WebServiceHostFactory覆盖 CreateServiceHost .

例如,如果您有一个类 GlobalErrorHandlerBehaviour实现 IServiceBehavior ,那么你可以按如下方式连接它:

public class CustomWebServiceHostFactory : WebServiceHostFactory
{
protected override ServiceHost CreateServiceHost(System.Type serviceType, System.Uri[] baseAddresses)
{
return ApplyGlobalErrorHandler(base.CreateServiceHost(serviceType, baseAddresses));
}

private ServiceHost ApplyGlobalErrorHandler(ServiceHost serviceHost)
{
serviceHost.Description.Behaviors.Add(new GlobalErrorHandlerBehaviour());
return serviceHost;
}
}

然后,您会将您的调用更新到 ServiceRoute构造函数传入这个自定义工厂。

关于wcf - 向 WCF REST 服务添加全局错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com