Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity DI与WCF客户端_C#_Wcf_Dependency Injection_Unity Container_Wcf Extensions - Fatal编程技术网

C# Unity DI与WCF客户端

C# Unity DI与WCF客户端,c#,wcf,dependency-injection,unity-container,wcf-extensions,C#,Wcf,Dependency Injection,Unity Container,Wcf Extensions,我正在为我们的项目使用UnityContainer。我需要为所有即将进行的wcf调用添加自定义头,因此我实现了IClientMessageInspector和IEndpointBehavior。现在,我尝试使用UnityContainer属性注入从某个对象获取标题值。相同的属性注入在IClientMessageInspector外部工作,但不在自定义Clientmessageinspector内部工作 属性注入 [Dependency] public IUnityContainer _conta

我正在为我们的项目使用UnityContainer。我需要为所有即将进行的wcf调用添加自定义头,因此我实现了IClientMessageInspector和IEndpointBehavior。现在,我尝试使用UnityContainer属性注入从某个对象获取标题值。相同的属性注入在IClientMessageInspector外部工作,但不在自定义Clientmessageinspector内部工作

属性注入

[Dependency]
public IUnityContainer _container { get; set; }

public object BeforeSendRequest(ref Message request, IClientChannel channel){var test= _container; }
_容器始终为空


我们可以像其他类一样在MessageInspector中使用UnityContainer吗?

这不是一个直接的答案,但可能会有所帮助。如果您使用Castle Windsor及其WcfFacility,您可以注册ClientMessageInspector,然后Windsor将创建inspector并注入其依赖项,它将处理配置以确保始终调用inspector。如何创建
Clientmessageinspector
?Unity将只注入创建自身的实例(除非在非常罕见的情况下使用
build
)…公共类TestClientMessageInspector:IClientMessageInspector@Haukinger,我通过继承IClientMessageInspector创建了testclientmessageinspector。并使用以下代码在endpointbehavior内的testclientmessageinspector上创建了实例<代码>公共类TestClientMessageInspector:IClientMessageInspector。{},在ApplyClientBehavior下的Endpointbehavior内创建ClientMessageInspector实例
public void ApplyClientBehavior(ServiceEndpoint endpoint,ClientRuntime ClientRuntime){ClientRuntime.ClientMessageInspector.Add(new testclientMessageInspector());}
如果使用
新建testclientMessageInspector()
创建它,您希望unity如何处理实例?例如,尝试
container.Resolve()
。这不是一个直接的答案,但可能会有所帮助。如果您使用Castle Windsor及其WcfFacility,您可以注册ClientMessageInspector,然后Windsor将创建inspector并注入其依赖项,它将处理配置以确保始终调用inspector。如何创建
Clientmessageinspector
?Unity将只注入创建自身的实例(除非在非常罕见的情况下使用
build
)…公共类TestClientMessageInspector:IClientMessageInspector@Haukinger,我通过继承IClientMessageInspector创建了testclientmessageinspector。并使用以下代码在endpointbehavior内的testclientmessageinspector上创建了实例<代码>公共类TestClientMessageInspector:IClientMessageInspector。{},在ApplyClientBehavior下的Endpointbehavior内创建ClientMessageInspector实例
public void ApplyClientBehavior(ServiceEndpoint endpoint,ClientRuntime ClientRuntime){ClientRuntime.ClientMessageInspector.Add(new testclientMessageInspector());}
如果使用
新建testclientMessageInspector()
创建它,您希望unity如何处理实例?例如,尝试
container.Resolve()