Установите HttpHeader в автоматически созданный прокси ews - PullRequest
0 голосов
/ 23 октября 2018

Я запускаю приложение синхронизации обмена с автоматически сгенерированным прокси-классом в .NET, построенном с Exchange2010.

Теперь мне нужно установить HttpHeaders:

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

, как описано здесь: Сохранение сходства в обмене

Но это относится к Управляемому API EWS, и я не могу найти это свойство в моем ExchangeServiceBindingObject.Так как же мне установить этот заголовок в моем автоматически сгенерированном прокси?

1 Ответ

0 голосов
/ 23 октября 2018

Я бы попробовал использовать EWS Managed Api вместо того, чтобы пытаться свернуть свой собственный.Если это, если это не вариант, вы можете добавить httpheaders, переопределив сгенерированный метод GetWebRequest на ExchangeServiceBinding, чтобы получить доступ к заголовкам следующим образом:

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;
    }
}

Затем вы можете вызвать новый производный класс, чтобы добавить пользовательскийзаголовки:

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...