Проблемы
При попытке автоматического создания кода прокси на основе схемы Пакет обновления 1 (SP1) для Microsoft Exchange Server 2010. В этом случае в коде прокси отсутствует следующую строку:
[System.Web.Services.Protocols.SoapHeaderAttribute("ExchangeImpersonation")]
Таким образом автоматически создаваемый прокси-серверы не поддерживают Exchange Impersonation.This проблема затрагивает следующие три операции:
-
GetUserOofSettings
-
SetUserOofSettings
-
GetUserAvailability
Решение
Для решения этой проблемы установите следующие обновления:
2579150 Описание накопительного пакета обновления 4 для Exchange Server 2010 Пакет обновления 1
Обходное решение
Чтобы обойти эту проблему, используйте службы Web Microsoft Exchange (EWS) управляемый API 1.1 для изменения созданных классов в схеме. Чтобы сделать это, добавьте следующую строку в коде прокси-сервера:
[System.Web.Services.Protocols.SoapHeaderAttribute("ExchangeImpersonation")]
Ниже приведен пример для GetUserOofSettings операции. Исходный код:
[System.Web.Services.Protocols.SoapHeaderAttribute("ServerVersionInfoValue", Direction = System.Web.Services.Protocols.SoapHeaderDirection.Out)][System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/exchange/services/2006/messages/GetUserOofSettings", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)][return: System.Xml.Serialization.XmlElementAttribute("GetUserOofSettingsResponse", Namespace = "http://schemas.microsoft.com/exchange/services/2006/messages")]public GetUserOofSettingsResponse GetUserOofSettings([System.Xml.Serialization.XmlElementAttribute(Namespace = "http://schemas.microsoft.com/exchange/services/2006/messages")] GetUserOofSettingsRequest GetUserOofSettingsRequest){ object[] results = this.Invoke("GetUserOofSettings", new object[] { GetUserOofSettingsRequest}); return ((GetUserOofSettingsResponse)(results[0]));}
Измененный код:
[System.Web.Services.Protocols.SoapHeaderAttribute("ServerVersionInfoValue", Direction = System.Web.Services.Protocols.SoapHeaderDirection.Out)][System.Web.Services.Protocols.SoapHeaderAttribute("ExchangeImpersonation")][System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/exchange/services/2006/messages/GetUserOofSettings", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)][return: System.Xml.Serialization.XmlElementAttribute("GetUserOofSettingsResponse", Namespace = "http://schemas.microsoft.com/exchange/services/2006/messages")]public GetUserOofSettingsResponse GetUserOofSettings([System.Xml.Serialization.XmlElementAttribute(Namespace = "http://schemas.microsoft.com/exchange/services/2006/messages")] GetUserOofSettingsRequest GetUserOofSettingsRequest){ object[] results = this.Invoke("GetUserOofSettings", new object[] { GetUserOofSettingsRequest}); return ((GetUserOofSettingsResponse)(results[0]));}
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Дополнительная информация
Дополнительные сведения о работе GetUserOofSettings посетите следующий веб-узел корпорации Майкрософт:
Общие сведения об операции GetUserOofSettingsДополнительные сведения о работе SetUserOofSettings посетите следующий веб-узел корпорации Майкрософт:
Общие сведения об операции SetUserOofSettingsДополнительные сведения о работе GetUserAvailability посетите следующий веб-узел корпорации Майкрософт:
Общие сведения об операции GetUserAvailabilityДополнительные сведения об олицетворении Exchange посетите следующий веб-узел корпорации Майкрософт: