Thursday, February 17, 2011

Eventid 4002, MSExchangeAvailability

I had a user experiencing Eventid 4002 from source MSExchangeAvailability under the application logs in event viewer. In the description field for the error the following was logged:

Process 9696: ProxyWebRequest CrossSite from S-1-1-0 to https://mail.example.com/ews/Exchange.asmx failed. Caller SIDs: NetworkCredentials. The exception returned is Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequestProcessingException: System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.70.5.21:443

at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)

at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

--- End of inner exception stack trace ---

at System.Web.Services.Protocols.WebClientAsyncResult.WaitForResponse()

at System.Web.Services.Protocols.WebClientProtocol.EndSend(IAsyncResult asyncResult, Object& internalAsyncState, Stream& responseStream)

at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.Service.EndGetUserAvailability(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.FreeBusyApplication.EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, Service service, IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequest.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.AsyncWebRequest.EndInvokeWithErrorHandling():. The request information is ProxyWebRequest type = CrossSite, url = https://mail.example.com/ews/Exchange.asmx

Mailbox list = SMTP:Werner.Zelisko@brnet.de, Parameters: windowStart = 2/1/2011 12:00:00 AM, windowEnd = 4/1/2011 12:00:00 AM, MergedFBInterval = 30, RequestedView = FreeBusy

. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.70.5.21:443

at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)

at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

--- End of inner exception stack trace ---

at System.Web.Services.Protocols.WebClientAsyncResult.WaitForResponse()

at System.Web.Services.Protocols.WebClientProtocol.EndSend(IAsyncResult asyncResult, Object& internalAsyncState, Stream& responseStream)

at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.Service.EndGetUserAvailability(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.FreeBusyApplication.EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, Service service, IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequest.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.AsyncWebRequest.EndInvokeWithErrorHandling()


The user had set the Internal and External URL for his WebServiceVirtualDirectory to a hostname of a CAS server that was a member of an array. When a CAS server is a member of an array the virtual directories need to point at the hostname of the array, not the hostname of the individual servers!

Please refer to the following technet article:
http://technet.microsoft.com/en-us/library/aa997237.aspx

This technet article says:

If you have a set of load balanced Client Access servers, you don't have to specify the name of each server when you run this command. You only need to use the name of one of the servers in the set of load balanced servers.


Changing the WebServiceVirtualDirectory to the name of the load balanced array resolved the issue.

No comments:

Post a Comment