我使用这种简单的方法将用户名和密码附加到 SOAP 请求标头。这在 Java 边界内工作正常,但我希望能够使用我的 WCF 客户端调用它。我该怎么做呢?
我尝试了以下代码,但它不包含标题中的凭据:
wsClient.ClientCredentials.UserName.UserName = "Hello";
wsClient.ClientCredentials.UserName.Password = "World";
提前致谢!
我使用这种简单的方法将用户名和密码附加到 SOAP 请求标头。这在 Java 边界内工作正常,但我希望能够使用我的 WCF 客户端调用它。我该怎么做呢?
我尝试了以下代码,但它不包含标题中的凭据:
wsClient.ClientCredentials.UserName.UserName = "Hello";
wsClient.ClientCredentials.UserName.Password = "World";
提前致谢!
这是一种非常糟糕的非标准化方式。它使用自定义 HTTP 标头,因此您不能期望内置的 WCF 机制会神奇地支持这种方法。WCF 应该如何知道您想要将自定义非标准 HTTP 标头添加到 HTTP 请求(不是 SOAP 标头)?
用这个:
var proxy = new YourServiceClient();
using (var scope = new OperationContextScope(proxy.InnerChannel))
{
var prop = new HttpRequestMessageProperty();
prop.Headers.Add("UserName", "Hello");
prop.Headers.Add("Password", "World");
OperationContext context = OperationContext.Current;
context.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = prop;
proxy.CallYourOperation();
}