Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# 如何传递WCF SOAP服务的标头_C#_Wcf - Fatal编程技术网

C# 如何传递WCF SOAP服务的标头

C# 如何传递WCF SOAP服务的标头,c#,wcf,C#,Wcf,我试图通过C#控制台应用程序使用WCFSOAP服务 我这里有两项服务, 一个用于通过传递用户名和密码来获取身份验证令牌 第二个用于获取所需的数据,其中此服务期望先前生成的令牌作为名为“Token”的头传递 当我使用soapui调用服务时,这种方式很好,我们可以选择发送头名称和值 但我找不到一种方法在程序上做同样的事情 下面是我尝试过的示例代码 SecurityService.IInteropSecurityService authenticationClient = new SecuritySe

我试图通过C#控制台应用程序使用WCFSOAP服务

我这里有两项服务, 一个用于通过传递用户名和密码来获取身份验证令牌 第二个用于获取所需的数据,其中此服务期望先前生成的令牌作为名为“Token”的头传递

当我使用soapui调用服务时,这种方式很好,我们可以选择发送头名称和值

但我找不到一种方法在程序上做同样的事情 下面是我尝试过的示例代码

SecurityService.IInteropSecurityService authenticationClient = new SecurityService.InteropSecurityServiceClient();

string token = client.GetAuthenticationToken("cfadmin", "305f2a0ebb646a2ab32689d5b9c01532");


EntityService.InteropEntityServiceClient entityClient = new EntityService.InteropEntityServiceClient();

 using (new OperationContextScope(entityClient.InnerChannel))
            {
                HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
                httpRequestProperty.Headers["Token"] = token;

                OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;

            }
entityClient.GetEntity("Test name");
当我尝试这个,它会让我

类型的未处理异常 发生“System.ServiceModel.Security.SecurityAccessDeniedException” 在mscorlib.dll中,附加信息:访问被拒绝


OperationContxtScope的作用域仅在Using语句中可用,即,具有特定soap头的服务请求在Using语句中有效。另一个调用在Using语句之外恢复,没有特定的头。
如果我们想将消息头永久添加到每个请求中,可以使用IClientMessageInspector接口。

请参阅我之前的答复。

如果有什么我能帮忙的,请随时告诉我