简单的 WCF 服务抛出 404 未找到错误

Simple WCF service throwing 404 not found error

我只是想创建非常简单的 WCF 服务,它将与 javascript ajax 调用 (REST) 交互,但它对我不起作用,好像我迷路了:

服务接口

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

namespace Wcf.App
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet(
            UriTemplate = "GetData/{value}", 
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        string getEmpData(string value);
    }
}

实施:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace Wcf.App
{
    public class Clocked
    {
        public string date { get; set; }
        public string type { get; set; }
    }

    public class DATA
    {
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string emailAddress { get; set; }
        public string phoneNum { get; set; }
        public string image { get; set; }
        public string title { get; set; }
        public List<Clocked> clocked { get; set; }
    }

    public class RootObject
    {
        public DATA DATA { get; set; }
    }

    public class Service1 : IService1
    {
        public string getEmpData(string test)
        {
            try
            {
                return " hello " + test;
                }
                catch (Exception ex)
                {
                    return "Can not open connection! " + ex.Message + "  Connection: " + connetionString;
                }
            }
            catch (SqlException e)
            {
                return e.Message;
            }
        }
    }
}

现在,当我尝试使用 jQuery AJAX 调用此服务时,它会抛出 404 未找到错误。

JS:

 $.ajax({
                url: "Service1.svc/GetData/3046722425",
                type: "GET",
                dataType: "json",
                success: function (data) {
                    console.log(data);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });

配置:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
    <bindings>
      <customBinding>
        <binding name="basicConfig">
          <binaryMessageEncoding/>
          <httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864" />
        </binding>
      </customBinding>      
      <webHttpBinding>
        <binding name="basicConfig">
          <security mode="None">
            <transport clientCredentialType="Basic"/>
          </security>
        </binding>
        <binding>
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <client/>
    <services>
        <service name="Wcf.App.Service1" behaviorConfiguration="ServiceBehaviour">
          <!--<endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="Wcf.App.IService1"/>-->
          <endpoint address="" binding="webHttpBinding" behaviorConfiguration="REST" contract="Wcf.App.IService1"/>
        </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
        <behavior name="REST">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="ServiceBehaviour">
          <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
        </behavior>
        <behavior name="REST">
          <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
        </behavior>
      </endpointBehaviors>      
    </behaviors>
  </system.serviceModel>

尝试从您的浏览器访问服务一次(丢弃方法名 Getdata 和参数值)或将其添加到 WCFTestClient 应用程序。

请确保您已激活来自 here 的 WCF 组件。