C# 如何使用Team Foundation Server Web钩子制作WCF Web服务耗材? 我遇到了Team Foundation Server 2015 Web钩子() 我可以在TFS端创建web钩子,它成功地使用了RequestBin web服务。但是当我创建WCF Web服务时,总是会出现错误。 首先,我get@无法处理消息,因为内容类型为'application/json;字符集utf-8“不是预期的类型”text/xml;字符集utf-8'(415)” 我在这里读了很多文章和相关问题。 尝试将Factory=“System.ServiceModel.Activation.WebServiceHostFactory”添加到.svc文件。之后,在使用服务时出现404错误,在尝试打开其WSDL时未找到端点

C# 如何使用Team Foundation Server Web钩子制作WCF Web服务耗材? 我遇到了Team Foundation Server 2015 Web钩子() 我可以在TFS端创建web钩子,它成功地使用了RequestBin web服务。但是当我创建WCF Web服务时,总是会出现错误。 首先,我get@无法处理消息,因为内容类型为'application/json;字符集utf-8“不是预期的类型”text/xml;字符集utf-8'(415)” 我在这里读了很多文章和相关问题。 尝试将Factory=“System.ServiceModel.Activation.WebServiceHostFactory”添加到.svc文件。之后,在使用服务时出现404错误,在尝试打开其WSDL时未找到端点,c#,web-services,wcf,tfs-2015,C#,Web Services,Wcf,Tfs 2015,所以,我的界面是: 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 { // ПРИМЕЧАНИЕ. Команду "Переимено

所以,我的界面是:

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;
        }
    }
}
my 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错误


希望有人能帮助我,因为我已经好几天没能打败这个web服务了,现在还不知道该怎么办。

404错误意味着找不到该页面。你发布过WCF web服务吗?如果你运行Fiddler检查你使用的URL,你会得到任何错误吗?是的,我将我的web服务发布到IIS,并且可以在那里看到它的wsdl。Fiddler,从来没有使用过我t、 它可以检查web服务吗?如果它只检查URL,那么-我看到wsdl,web服务就在那里的某个地方。