2012-02-06 2 views
2

이므로 BuildQualityChanged 및 WorkItemChanged 이벤트를 읽기 위해 tfs 이벤트 등록을 사용하려고하므로 메시지를 처리 ​​할 수 ​​없습니다. 그것은 이벤트 XML을 가져 오는 동안 지금은 오류를 다음 얻을 전에 몇 달을 일하고 :Programmatic TFS 2010 이벤트 등록 + 오류 HTTP 코드 415 : 내용이

HTTP 코드 415 : 메시지를 처리 ​​할 수 ​​없기 때문에 콘텐츠 형식 '응용 프로그램/비누 + XML; 문자셋 = UTF-8 '이 아니었다 예상 유형'텍스트/XML; charset = utf-8 '. ---> System.Net.WebException : 원격 서버에서 오류 반환 : 메시지를 처리 ​​할 수 ​​없습니다 (415) 때문에 콘텐츠 형식 '응용 프로그램/비누 + XML; charset = utf-8 '이 (가) 예상 된 유형'text/xml이 아니 었습니다. 문자셋 = UTF-8 '...

임 건물 나중에 Windows 서비스가 될 것이다 콘솔 응용 프로그램. WCF 서비스를 호스팅하기위한 코드는 다음과 같다 :이 오류와 함께 지금까지 발견

private void HostWcfService() 
{ 
    D_("Hosting WCF service"); 
    var serviceUri = new Uri(GetCorrectServiceAddress()); 
    _host = new ServiceHost(typeof(BuildQualityChanged), new []{serviceUri}); 
    AddBehaviors(_host); 
    SetBinding(_host, serviceUri); 
    _host.Open(); 
} 

private static void AddBehaviors(ServiceHost service) 
{ 
    var smb = service.Description.Behaviors.Find<ServiceMetadataBehavior>(); 
    if (smb == null) 
    { 
     smb = new ServiceMetadataBehavior(); 
     service.Description.Behaviors.Add(smb); 
    } 
    smb.HttpGetEnabled = true; 

    var sdb = service.Description.Behaviors.Find<ServiceDebugBehavior>(); 
    if (sdb == null) 
    { 
     sdb = new ServiceDebugBehavior(); 
     service.Description.Behaviors.Add(sdb); 
    } 
    sdb.IncludeExceptionDetailInFaults = true; 
} 

private void SetBinding(ServiceHost _host, Uri serviceUri) 
{ 
    // create and configure an MTOM encoder 
    var mtom = 
     new TextMessageEncodingBindingElement(
      MessageVersion.Soap11, Encoding.UTF8); 

    // create a CustomBinding using MTOM encoder 
    CustomBinding binding = new CustomBinding(); 
    binding.Elements.Add(mtom); 
    binding.Elements.Add(
     new HttpTransportBindingElement()); 
    _host.AddServiceEndpoint(typeof(TFS.Build.ITeamFoundationEventSubscriber), 
     binding, serviceUri); 
} 

모든 솔루션 수행의 Web.config에서 서비스를 구성,이 날에 대한 가능한 해결책이 없다, 나는 프로그램 호스팅해야합니다 . 내가 찾은 두 번째 솔루션은 오히려 CustomBinding보다은 BasicHttpBinding을 사용하는 것입니다,하지만이 같은 오류와 함께, 나를 위해 너무 TFS 휴식을 작동하지 않습니다. BasicHttpBinding을 사용하여 WSDL의 SOAP 버전이 SOAP 1.2인지 궁금합니다. 곳은 BasicHttpBinding을 사용하는() SetBinding 것은 내가 응용 프로그램/비누 + XML 아니라 응용 프로그램 이상/XML이 필요

var binding1 = new BasicHttpBinding(); 
      binding1.Name = "binding1"; 
      binding1.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; 
      binding1.Security.Mode = BasicHttpSecurityMode.None; 
      _host.AddServiceEndpoint(typeof(TFS.Build.ITeamFoundationEventSubscriber), binding1, serviceUri); 

필요한 주어진 요청의 유일한 차이점은 콘텐츠 유형입니다

사람은 말해 줄 수 내 머리 잘못 됐어?

마이클

내가 어떤 해결책을 발견하지 않았다 검색의 시간 후

답변

1

.

var binding1 = new WSHttpBinding(); 
binding1.Name = "binding1"; 
binding1.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; 
binding1.Security.Mode = SecurityMode.None; 
_host.AddServiceEndpoint(typeof(TFS.Build.ITeamFoundationEventSubscriber), binding1, GetCorrectServiceAddress()); 

MAGIC, IT 작동 :() 메소드는 다음과 지금

TFS2010는 보안

내 SetBinding의 내용하지 않고있는 wsHttpBinding을 지원 : 마이크로 소프트의 괴짜 나 그것을 제거하는 데 도움이 :)