Использование делегатов с веб-службами Exchange - PullRequest
1 голос
/ 09 октября 2008

Кто-нибудь использовал делегатов с веб-сервисами exchnage? Я бы хотел, чтобы один пользователь мог управлять календарями других пользователей в Exchange. Я нахожу эту проблему немного хитрой, и я хотел бы увидеть, как другие смогли заставить ее работать должным образом.

1 Ответ

3 голосов
/ 06 ноября 2008

Я только начинаю, но мне удалось получить доступ к ресурсным календарям через учетную запись делегата.

Я использовал рекомендации этой статьи об учетной записи делегата и учетной записи ресурса. (Учетные записи ресурсов сложны, потому что они отключены в AD, и вам нужно использовать учетную запись делегата, чтобы получить к ним доступ)

После настройки учетной записи делегата на сервере я настроил привязку ExchangeServerBinding с использованием учетных данных учетной записи делегата:

ExchangeServiceBinding binding = new ExchangeServiceBinding();
binding.Url = @"https://dc1.litwareinc.com/ews/exchange.asmx";
// Setup binding with username and password of the delegate account
binding.Credentials = 
    new NetworkCredential(delegateuserName, delegatepassword, "litwareinc.com");

( Я использую подготовленный Microsoft образ виртуального сервера для тестирования )

Затем при доступе к почтовому ящику я настроил запрос FindItemType и использовал адрес smtp той учетной записи, к которой я хочу получить доступ:

// Prepare request
var findItemRequest = new FindItemType();
// Setup the mailbox using the smtp address of the account wanted
var mailbox = new EmailAddressType {EmailAddress = mailboxId};
findItemRequest.ParentFolderIds = 
    new[] {new DistinguishedFolderIdType {Mailbox = mailbox}};
((DistinguishedFolderIdType) findItemRequest.ParentFolderIds[0]).Id = 
    DistinguishedFolderIdNameType.calendar;
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;

// Add ItemResponseShapeType and Calendarview to request here ...

// The create a FindItemResponseType using the binding and the request
var response = binding.FindItem(findItemRequest);

Итак, вкратце:

  1. Настройка учетной записи с делегированным доступом на сервере Exchange, это можно сделать с помощью owa или сценария Exchange Shell
  2. Использовать учетную запись с делегированным доступом к объекту ExchangeServiceBinding
  3. Доступ к целевой учетной записи с помощью FindItemType с целевой учетной записью smtp-addres как EmailAddressType

С уважением Джеспер Хауге

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...