在 aws 自动生成的代理中设置 Http Header

Set HttpHeader in ews autogenerated proxy

Im 运行 Exchange 同步应用程序,在使用 Exchange2010 构建的 .NET 中具有自动生成的代理 Class。

现在,我需要设置 HttpHeaders:

service.HttpHeaders.Add("X-AnchorMailbox", Mailbox.SMTPAddress);
service.HttpHeaders.Add("X-PreferServerAffinity", "true");

就像这里描述的那样: Maintain affinity in exchange

但它指的是 EWS Managed API,我在我的 ExchangeServiceBindingObject 中找不到这个 属性。那么如何在我的自动生成的代理中设置这个 header?

我会尝试使用 EWS Managed Api 而不是尝试自己动手。如果那不是一个选项,您可以通过覆盖 ExchangeServiceBinding 上生成的 GetWebRequest 方法来添加 httpheaders 以到达 headers,如下所示:

public class ExchangeServiceBindingWithHeaders : EwsProxy.ExchangeServiceBinding
{
    private NameValueCollection _customHeaders = new NameValueCollection();

    public void AddHeaders(string key, string value)
    {
        _customHeaders.Add(key, value);
    }

    protected override WebRequest GetWebRequest(Uri uri)
    {
        HttpWebRequest req = (HttpWebRequest)base.GetWebRequest(uri);
        req.Headers.Add(_customHeaders);

        return req;
    }
}

然后可以调用新派生的class添加自定义headers:

ExchangeServiceBindingWithHeaders service = new ExchangeServiceBindingWithHeaders();
service.RequestServerVersionValue = new RequestServerVersion();
service.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010;
service.Credentials = new NetworkCredential("<username>", "<password>", "<domain>");
service.Url = @"https://<FQDN>/EWS/Exchange.asmx";

service.AddHeaders("X-AnchorMailbox", "some@emailaddress.com");
service.AddHeaders("X-PreferServerAffinity", "true");