gpt4 book ai didi

wcf - 如何为 IIS 托管的 WCF 服务上的所有操作添加 OperationBehavior?

转载 作者:行者123 更新时间:2023-12-02 08:43:05 25 4
gpt4 key购买 nike

我有一个自定义的 OperationBehavior。我想一次将它应用于所有操作。遗憾的是,OperationBehaviors 无法针对整个服务或在 web.config 中进行配置。

在测试应用程序中托管 WCF 服务时,我可以执行以下操作:

        foreach (var ep in _serviceHost.Description.Endpoints)
{
foreach (OperationDescription od in ep.Contract.Operations)
{
od.Behaviors.Add(new MyOperationBehavior());
}
}

_serviceHost.Open();

但我如何在 IIS 托管的 Web 应用程序中执行此操作?

我试图在 Application_Start 中获取 OperationContext.Current.Host.Description.Endpoints 但当然 OperationContext.Current 在任何之前都不可用操作已经开始,所以我的方法失败了。

最佳答案

您可以使用 ServiceHostFactory 来做到这一点。有了它,您可以在打开服务之前访问 OM。

这是一个例子:

public class MyFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
foreach (var ep in host.Description.Endpoints)
{
foreach (OperationDescription od in ep.Contract.Operations)
{
od.Behaviors.Add(new MyOperationBehavior());
}
}

return host;
}
}

您可以在http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx 获得更多关于服务宿主工厂的信息。

关于wcf - 如何为 IIS 托管的 WCF 服务上的所有操作添加 OperationBehavior?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894412/

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