1
Vote

Notifications not arriving at rabbit (vs 2010)

description

hi
 
i've been chasing an issue for a while where my rabbit isn't receiving notifications from TFS 2010. I installed Visual Studio Team System 2008 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010 on the client machine running the service. Through following some debug instructions i found i can run this command on the tfs_config table on the sql box connected to tfs:
SELECT TOP 10 DATEADD(hour, -7, StartTime) as StartTimePDT, Result, ResultMessage
 
FROM [Tfs_Configuration].[dbo].[tbl_JobHistory]
 
WHERE JobId = 'A4804DCF-4BB6-4109-B61C-E59C2E8A9FF7' AND Result <> 0
 
ORDER BY StartTime DESC
 
this tells me the soap notifications are not being delivered (below) more importantly it looks like the http code is 415 which as far as i can make out means the bunny is expecting SOAP 1.1 and TFS is sending SOAP 1.2. not sure how this could ever have worked for anyone using TFS 2010 unless they have upgraded soap in sp1 or similar?
 
There were errors or warnings during notification delivery. 0/0 emails delivered. 1/5 soap notifications delivered. 4 errors. 0 warnings. ------------------------------- Notification not delivered. Notification: CheckinEvent (DeliveryType: Soap; Address: http://DEV03:8731/TeamBuildBunny/CheckInEndpoint/) Exception: Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: Team Foundation services are not available from server http://dev03:8731/TeamBuildBunny/CheckInEndpoint/. Technical information (for administrator): HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'. ---> System.Net.WebException: The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.. at System.Net.HttpWebRequest.GetResponse() at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj) --- End of inner exception stack trace --- at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader) at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse& response) at Microsoft.TeamFoundation.JobService.Extensions.Core.TeamFoundationNotificationClient.Notify(String eventXml, String tfsIdentityXml, Subscription subscription) at Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension.SendSoapNotification(TeamFoundationRequestContext requestContext, TeamFoundationNotification notification, TeamFoundationIdentityService identityService) ------------------------------- Notification not delivered. Notification: BuildCompletionEvent (DeliveryType: Soap; Address: http://DEV03:8731/TeamBuildBunny/BuildCompletionEndpoint/) Exception: Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: Team Foundation services are not available from server http://dev03:8731/TeamBuildBunny/BuildCompletionEndpoint/. Technical information (for administrator): HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'. ---> System.Net.WebException: The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.. at System.Net.HttpWebRequest.GetResponse() at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj) --- End of inner exception stack trace --- at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader) at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse& response) at Microsoft.TeamFoundation.JobService.Extensions.Core.TeamFoundationNotificationClient.Notify(String eventXml, String tfsIdentityXml, Subscription subscription) at Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension.SendSoapNotification(TeamFoundationRequestContext requestContext, TeamFoundationNotification notification, TeamFoundationIdentityService identityService) ------------------------------- Notification not delivered. Notification: CheckinEvent (DeliveryType: Soap; Address: http://DEV03:8731/TeamBuildBunny/CheckInEndpoint/) Exception: Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: Team Foundation services are not available from server http://dev03:8731/TeamBuildBunny/CheckInEndpoint/. Technical information (for administrator): HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'. ---> System.Net.WebException: The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.. at System.Net.HttpWebRequest.GetResponse() at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj) --- End of inner exception stack trace --- at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader) at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse& response) at Microsoft.TeamFoundation.JobService.Extensions.Core.TeamFoundationNotificationClient.Notify(String eventXml, String tfsIdentityXml, Subscription subscription) at Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension.SendSoapNotification(TeamFoundationRequestContext requestContext, TeamFoundationNotification notification, TeamFoundationIdentityService identityService) ------------------------------- Notification not delivered. Notification: BuildCompletionEvent (DeliveryType: Soap; Address: http://DEV03:8731/TeamBuildBunny/BuildCompletionEndpoint/) Exception: Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: Team Foundation services are not available from server http://dev03:8731/TeamBuildBunny/BuildCompletionEndpoint/. Technical information (for administrator): HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'. ---> System.Net.WebException: The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.. at System.Net.HttpWebRequest.GetResponse() at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj) --- End of inner exception stack trace --- at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader) at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse& response) at Microsoft.TeamFoundation.JobService.Extensions.Core.TeamFoundationNotificationClient.Notify(String eventXml, String tfsIdentityXml, Subscription subscription) at Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension.SendSoapNotification(TeamFoundationRequestContext requestContext, TeamFoundationNotification notification, TeamFoundationIdentityService identityService)

comments

liddellj wrote Jun 30, 2011 at 8:02 AM

I haven't had the time to explicitly test the software against TFS 2010 - but since the APIs are supposed to be backwards compatible it should work, but I guess not.

HTTP status code 415 mean 'Unsupported Media Type', which suggests there is something it doesn't like about the request.

You could try downloading the source and rebuilding it against the TFS 2010 SDK.

joeldickson wrote Jun 2, 2012 at 4:01 AM

Problem
HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'
Issue Because TFS 2010 is now using SOAP 1.2, you need to use wsHttpBinding.

Solution
Change the basicHttpBinding to wsHttpBinding

Thanks to Mattias Sköldin his post http://mskold.blogspot.com/2010/02/upgrading-tfs-event-subscriptions-to.html

joeldickson wrote Jun 2, 2012 at 4:28 AM

After you make the above change you will also have this problem

Problem
System.Web.Services.Protocols.SoapException: The message could not be processed. This is most likely because the action 'http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.

Issue
You have to change the security of the binding to None

Solution
Add a new bindig configuration where you set the Security to None

wrote Feb 13, 2013 at 1:51 AM