【发布时间】:2017-11-17 11:04:27
【问题描述】:
我知道这已经被问过一百次了,但我就是无法让它工作。我有一个 .Net Web 服务客户端,它需要连接到不返回 401 质询响应的外部 Web 服务。我必须在第一次通话时发送身份验证标头。我通过在另一个文件中创建部分类来覆盖生成的代理类的 GetWebRequest 方法。我还在生成的文件中添加了该方法,以查看是否有区别,但代码只是没有被调用。这最初是在 VS 2013 中创建的 .Net 3.5 Web 服务项目,但我尝试将目标框架更改为 4.0、4.5 等。并且没有任何效果。
我正在使用的代码:
[System.Web.Services.WebServiceBindingAttribute(Name = "WSLDSD03_v1_webService_ValidationTicketCreation_Binder", Namespace = "http://llvap002d/WSLDSD03.v1.webService:ValidationTicketCreation")]
public partial class WSLDSD03_v1_webService_ValidationTicketCreation_Binder : System.Web.Services.Protocols.SoapHttpClientProtocol
{
protected override WebRequest GetWebRequest(Uri uri)
{
var request = base.GetWebRequest(uri);
string WSUID = ConfigurationManager.AppSettings["WSUID"];
string WSPWD = ConfigurationManager.AppSettings["WSPWD"];
string encoded = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(WSUID + ":" + WSPWD));
request.Headers.Add("Authorization", "Basic " + encoded);
return request;
}
}
更新:我后来发现,在一个干净的解决方案和重建之后,如果我将它移到生成的类中,该方法实际上会被调用。这似乎是一个单独文件中的部分类。
【问题讨论】:
标签: c# .net web-services