繁体   English   中英

C# 将不记名令牌传递给生成的代理 class 以添加 header

[英]C# Passing bearer token to generated proxy class to add header

我知道我可以向通过覆盖 GetWebRequest 扩展 SoapHttpClientProtocol 的 WebService 代理 class 添加标头。 这工作正常。 我的问题是,当我实例化我的 web 服务 class 时,我传入了需要添加到 header 的不记名令牌值; 但是它没有被使用,我无法弄清楚我做错了什么。

public partial class MyService : System.Web.Services.Protocols.SoapHttpClientProtocol {
        
private string _token;
    
private void SetToken(string t) { this._token = t; }
private string GetToken() { return this._token; }
    
protected override System.Net.WebRequest GetWebRequest(Uri uri) {
     System.Net.WebRequest request = base.GetWebRequest(uri);
     request.Headers.Add("Authorization", GetToken());
    
     System.IO.File.WriteAllText(@"C:\temp\test.txt", request.Headers.ToString());
     return request;
     }
    
public MyService (string t){
     SetToken(t);
     // ... other stuff
     }
}

从我的代码隐藏中,我实例化 MyService 并将令牌传递给构造函数。

但是,当我在返回请求之前将标头转储到文本文件时,output 看起来像这样:

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
Authorization:

所以我知道正在调用覆盖并且正在添加 header,它只是没有从变量 _token 中获取承载令牌的值,应该在实例化 class 时设置该值。

我错过了什么?

尝试使用此语法添加令牌:


request.PreAuthenticate = true;
request.Headers.Add("Authorization", "Bearer " + GetToken());


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM