【发布时间】:2017-01-30 16:37:26
【问题描述】:
我已经使用了一个 WSDL,并成功调用了 Web 服务方法。请求有一个 Authorization 标头,只能在发出请求时添加:
public static NumberCaptureClient Connect()
{
var remoteAddress = new EndpointAddress("https://website.com:8443/webservice/WebServiceNumberCapture");
using (var NumberCaptureClient = new NumberCaptureClient(new BasicHttpBinding(BasicHttpSecurityMode.Transport), remoteAddress))
{
NumberCapture.ClientCredentials.UserName.UserName = "test";
NumberCapture.ClientCredentials.UserName.Password = "test";
try
{
using (OperationContextScope scope = new OperationContextScope(NumberCaptureClient.InnerChannel))
{
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[HttpRequestHeader.Authorization] = "Basic " +
Convert.ToBase64String(Encoding.ASCII.GetBytes(NumberCaptureClient.ClientCredentials.UserName.UserName + ":" + NumberCaptureClient.ClientCredentials.UserName.Password));
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
}
}
catch (Exception error)
{
MessageBox.Show("Error");
return null;
}
return NumberCaptureClient;
}
}
如您所见,我需要返回代理客户端的实例(客户端有数百个方法都需要标头)但需要它,因此标头总是被发送,使用“使用”子句不可能,因为范围在它之外丢失。
有没有办法永久添加标头,以便将它们与对 Web 服务的每个请求一起发送?
【问题讨论】:
标签: c# web-services