如何使Team Foundation Server Web Hooks使用WCF Web服务?

时间:2015-12-03 01:05:58

标签: c# web-services wcf tfs2015

我在Team Foundation Server 2015 Web Hooks(https://www.visualstudio.com/get-started/webhooks-and-vso-vs)遇到问题 我可以在TFS端创建Web钩子,并成功使用RequestBin WebService。但是当我创建WCF Web服务时 - 一直都有错误。 首先,我得到@Cannot处理消息,因为内容类型' application / json; charset utf-8'不是预期的类型' text / xml; charset utf-8'。(415)" 我在这里阅读了很多文章和相关问题。 试图添加Factory =" System.ServiceModel.Activation.WebServiceHostFactory"到.svc文件。之后我在使用服务时遇到404错误,并且在尝试打开它时没有找到端点

所以,我的界面是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace MyService
{
    // ПРИМЕЧАНИЕ. Команду "Переименовать" в меню "Рефакторинг" можно использовать для одновременного изменения имени интерфейса "IService1" в коде и файле конфигурации.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke]
        string RollUp(string sData);

        // TODO: Добавьте здесь операции служб
    }


    // Используйте контракт данных, как показано в примере ниже, чтобы добавить составные типы к операциям служб.
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }
}

我的节目是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace MyService
{
    // ПРИМЕЧАНИЕ. Команду "Переименовать" в меню "Рефакторинг" можно использовать для одновременного изменения имени класса "Service1" в коде, SVC-файле и файле конфигурации.
    // ПРИМЕЧАНИЕ. Чтобы запустить клиент проверки WCF для тестирования службы, выберите элементы Service1.svc или Service1.svc.cs в обозревателе решений и начните отладку.
    public class Service1 : IService1
    {
         public string RollUp(string sData)
        {
            return "Sucess " + sData;
        }
    }
}

我的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!--Чтобы избежать раскрытия метаданных, до развертывания задайте следующим параметрам значение "false". -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- Чтобы при сбое получать подробные сведения об исключении для целей отладки, установите для нижеприведенного параметра значение true.  Перед развертыванием установите значение false, чтобы избежать раскрытия информации об исключении -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>        
        <behavior name="json">          
          <webHttp/>        
        </behavior>      
      </endpointBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>      
      <service name="MyService.Service1">        
        <endpoint name="jsonEP"                  
                  address=""
                  binding="webHttpBinding"                  
                  behaviorConfiguration="json"                  
                  contract="MyService.IService1"/>      
      </service>    
    </services>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        Для просмотра корневого каталога веб-приложения во время отладки установите значение true.
        Перед развертыванием установите значение false, чтобы избежать раскрытия сведений в папке веб-приложения.
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>

</configuration>

所有这些我得到404错误。

希望有人可以帮助我,因为我可以打败这些网络服务好几天,现在不知道该怎么做。

0 个答案:

没有答案