Начало работы с веб-службами Exchange 2010

мне было поручено написать веб-службу SOAP в .Net, чтобы быть промежуточным программным обеспечением между EWS2010 и сервером приложений, который ранее использовал WebDAV для подключения к Exchange. (как я понимаю, WebDAV уходит с EWS2010, поэтому сервер приложений больше не сможет подключаться, как это было раньше, и экспоненциально сложнее подключиться к EWS без WebDAV. Теория заключается в том, что делать это в .Net должно быть проще, чем что-либо еще... Правильно?!)

моя конечная цель состоит в том, чтобы быть в состоянии get и создания/обновления электронная почта, элементы календаря, контакты и элементы списка дел для указанной учетной записи Exchange. (Удаление в настоящее время не требуется, но я могу построить его для дальнейшего рассмотрения, если это достаточно просто).

мне изначально дали пример кода, который на самом деле работал, но я быстро понял, что он устарел. Используемые типы и классы нигде не отображаются текущая документация.

например, для создания соединения с сервером Exchange использовался метод:

ExchangeService svc = new ExchangeService();
svc.Credentials = new WebCredentials(AuthEmailAddress, AuthEmailPassword);
svc.AutodiscoverUrl(AutoDiscoverEmailAddress);

для чего это стоит, это использовало сборку, которая поставляется с образцом кода:Microsoft.Exchange.WebServices.dll ("конюшни").

прежде чем я понял, что это не текущий стандартный способ выполнения соединения, и он работал, я попытался построить на нем и добавить метод для создания элементов календаря, который я скопировать из вот!--29-->:

static void CreateAppointment(ExchangeServiceBinding esb)
{
    // Create the appointment.
    CalendarItemType appointment = new CalendarItemType();

    ...
}

сразу же, я столкнулся с разницей между ExchangeService и ExchangeServiceBinding ("ESB"); поэтому я начал гуглить, чтобы попытаться выяснить, как получить определение ESB, чтобы CreateAppointment метод компиляции. Я нашел этот блог это объясняет, как создать прокси-класс из WSDL, что я и сделал.

к сожалению, это вызвало некоторые конфликты, когда типы, определенные в исходной сборке,Microsoft.Exchange.WebServices.dll (который пришел с пример кода) перекрывается с типами в моем новом EWS.dll сборка (которую я скомпилировал из кода, сгенерированного из services.wsdl предоставлено сервером Exchange).

я исключил сборку MEWS, что только ухудшило ситуацию. Я перешел от нескольких ошибок и предупреждений к 25 ошибкам и 2510 предупреждениям. Все виды и методы не были найдены. Здесь явно что-то не так.

дополнительные шаги, которые он принимает в VS2008), и я думаю, что я вернулся на правильный путь.

я удалил (фактически, на данный момент, просто исключил) все предыдущие сборки, которые я пытался; и я добавил ссылку на службу для https://my.exchange-server.com/ews/services.wsdl

теперь у меня только 1 ошибка и 1 предупреждение.

предупреждение:
Элемент "transport" не может содержать дочерний элемент "extendedProtectionPolicy", поскольку модель содержимого родительского элемента пуста.

данное изменение, которое было сделано в интернете.config, когда я добавил ссылку на службу; и я только что нашел что вот так. Я прокомментировал этот раздел, как указано, и это действительно заставило предупреждение уйти, поэтому woot для этого.

ошибка не была так легко обойти, хотя:

ошибка:
Тип или имя пространства имен Не удалось найти "ExchangeService" (отсутствует директива using или ссылка на сборку?)

это относится к функции, которую я использовал для создания соединения EWS, вызываемого каждым из веб-методов:

private ExchangeService getService(String AutoDiscoverEmailAddress, String AuthEmailAddress, String AuthEmailPassword)
{
    ExchangeService svc = new ExchangeService();
    svc.Credentials = new WebCredentials(AuthEmailAddress, AuthEmailPassword);
    svc.AutodiscoverUrl(AutoDiscoverEmailAddress);
    return svc;
}

эта функция отлично работала с сборкой MEWS из примера кода, но ExchangeService тип больше не доступен. (И не ExchangeServiceBinding, Это было первое, что я проверил.)

на данный момент, так как я не следуя любым указаниям из документации(я не смог найти нигде в документации, в которой говорилось добавить ссылку на службу к службам вашего сервера Exchange.wsdl -- но это кажется лучшим / самым дальним, что я получил до сих пор), я чувствую, что я летаю вслепую.

я знаю, что мне нужно выяснить, что это должно заменить ExchangeService / ExchangeServiceBinding, реализовать это, а затем работать через любые ошибки, возникающие в результате этого переключателя...

но у меня нет идея, как это сделать, или где искать как это сделать. Googling "ExchangeService" и "ExchangeServiceBinding", похоже, приводят только к устаревшим сообщениям в блогах и MSDN, ни один из которых до сих пор не оказался ужасно полезным.

что я должен заменить ExchangeService / ExchangeServiceBinding С? Есть ли какое-то другое место, которое документы, работающие с EWS, лучше, чем MSDN?

1 ответов


Я бы рекомендовал перейти к управляемому API EWS. Это намного проще в использовании, чем пытаться собрать все вместе самостоятельно. Он поддерживает как Exchange 2007 SP1, так и Exchange 2010. Я думаю, вы найдете его намного проще в использовании и, вероятно, устраните свои проблемы.

Версия 1: Вот это скачать с Microsoft.

и вот это документы MSDN.

для версии 2 (Спасибо @ ruffin!)

скачать - документы MSDN


добавлено вопросом asker:

Дополнительные ссылки, которые оказались полезными: