Domanda

Qualcuno ha usato i delegati con i servizi Web Exchnage? Vorrei che un utente fosse in grado di controllare i calendari degli altri utenti in Exchange. Trovo che questo problema sia un po 'complicato e mi piacerebbe vedere come gli altri sono stati in grado di farlo funzionare correttamente.

È stato utile?

Soluzione

Ho appena iniziato qui, ma sono riuscito ad accedere ai calendari delle risorse tramite un account delegato.

Ho usato i consigli di questo articolo sull'account delegato e conti delle risorse. (Gli account delle risorse sono complicati perché sono disabilitati in Active Directory e devi utilizzare un account delegato per accedervi)

Dopo aver impostato l'account delegato sul server, ho impostato ExchangeServerBinding utilizzando le credenziali dell'account delegato:

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");

( Sto usando l'immagine del server virtuale preparato da Microsoft per il test )

Quindi, quando accedo alla cassetta postale, ho impostato una richiesta FindItemType e utilizzo l'indirizzo smtp dell'account a cui voglio accedere:

// 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);

Quindi in breve:

  1. Configura un account con accesso delegato sul server Exchange, questo può essere fatto tramite owa o con uno script di Exchange Shell
  2. Utilizza l'account con accesso delegato sull'oggetto ExchangeServiceBinding
  3. Accedi all'account di destinazione utilizzando FindItemType con l'account di destinazione smtp-addres come EmailAddressType

Saluti Jesper Hauge

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top