【问题标题】:Setting Authorization Header to .Net Web Service Client将授权标头设置为 .Net Web 服务客户端
【发布时间】: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


    【解决方案1】:

    原来是一个简单的编码错误。我没有注意到生成的代理文件中的命名空间类似于 MyProject.WebReference,但在我的单独文件中,我使用了主项目命名空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多