C# 在Autofac服务注册期间修改WCF端点行为
当从客户端代理向我们的每个WCF服务方法发出请求时,我们需要发送一个身份验证cookie。创建cookie的代码工作正常,但我正在尝试修改Autofac服务注册代码,以添加新的端点行为,从而将cookie添加到请求头。我使用Fiddler作为代理来查看cookie是否添加到请求中 以下是迄今为止我所掌握的,但不起作用:C# 在Autofac服务注册期间修改WCF端点行为,c#,wcf,cookies,autofac,C#,Wcf,Cookies,Autofac,当从客户端代理向我们的每个WCF服务方法发出请求时,我们需要发送一个身份验证cookie。创建cookie的代码工作正常,但我正在尝试修改Autofac服务注册代码,以添加新的端点行为,从而将cookie添加到请求头。我使用Fiddler作为代理来查看cookie是否添加到请求中 以下是迄今为止我所掌握的,但不起作用: private static void RegisterService<TService>(ContainerBuilder builder) { bui
private static void RegisterService<TService>(ContainerBuilder builder)
{
builder.Register(c => new ChannelFactory<TService>(string.Format("BasicHttpBinding_{0}", typeof(TService).Name))).SingleInstance();
builder.Register(c =>
{
var channel = c.Resolve<ChannelFactory<TService>>();
if (!channel.Endpoint.Behaviors.Contains(typeof(SamsTrustBehaviour)))
{
channel.Endpoint.Behaviors.Add(new SamsTrustBehaviour());
}
return channel.CreateChannel();
}).UseWcfSafeRelease();
}
因此,似乎添加到ClientBase.Endpoint
有效,而添加到ChannelFactory.Endpoint
无效
是否有一种方法可以在注册期间向WCF通道端点添加行为,该行为会一直持续到客户机代理发出请求为止?我最近遇到了同样的问题。下面是我使用的基于AutoFac文档的解决方案
containerBuilder.Register(s =>
{
var factory = s.Resolve<ChannelFactory<IService>>();
factory.Opening +=
(sender, args) =>
factory.Endpoint.Behaviors.Add(new SamsTrustBehaviour());
return factory.CreateChannel();
});
containerBuilder.Register(s=>
{
var factory=s.Resolve();
工厂,开业+=
(发送方,args)=>
添加(新的samstrustbehavior());
返回factory.CreateChannel();
});
我希望这有帮助
containerBuilder.Register(s =>
{
var factory = s.Resolve<ChannelFactory<IService>>();
factory.Opening +=
(sender, args) =>
factory.Endpoint.Behaviors.Add(new SamsTrustBehaviour());
return factory.CreateChannel();
});