Operaciones de "GetUserOofSettings", "SetUserOofSettings" y "GetUserAvailability" no permite la suplantación de Exchange en el esquema de Exchange Server 2010 SP1


Síntomas


Intenta generar código proxy basándose en el esquema de Microsoft Exchange Server 2010 Service Pack 1 (SP1). En esta situación, la siguiente línea es falta en el código proxy:
[System.Web.Services.Protocols.SoapHeaderAttribute("ExchangeImpersonation")] 
Por lo tanto, los servidores proxy generados automáticamente no admiten Exchange Impersonation.This problema afecta las tres operaciones siguientes:
  • GetUserOofSettings
  • SetUserOofSettings
  • GetUserAvailability

Solución


Para resolver este problema, instale el paquete siguiente:
2579150 Descripción de paquete acumulativo de actualizaciones 4 para Exchange Server 2010 Service Pack 1

Solución alternativa


Para evitar este problema, utilice Microsoft Exchange Web Services (EWS) Managed API 1.1 para cambiar las clases generadas en el esquema. Para ello, agregue la siguiente línea en el código proxy:
[System.Web.Services.Protocols.SoapHeaderAttribute("ExchangeImpersonation")] 
A continuación es un ejemplo de la operación de GetUserOofSettings . Código original:
[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]));}
Código modificado:
[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]));}

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

Más información


Para obtener más información sobre la operación de GetUserOofSettings , visite el siguiente sitio Web de Microsoft:Para obtener más información sobre la operación de SetUserOofSettings , visite el siguiente sitio Web de Microsoft:Para obtener más información sobre la operación de GetUserAvailability , visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de la suplantación de Exchange, visite el siguiente sitio Web de Microsoft: