namespace Ajax_Enabled_Wcf_Service
{
[ServiceContract(Namespace = "Ajax_Enabled_Wcf_Service")]


 public class Service1
 {

    [OperationContract]
    public double CostOfSandwiches(int quantity)
    {
        return 1.25 * quantity;
    }

    // Add more operations here and mark them with [OperationContract]
}
}
and here is my default web.config file
<configuration>
<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" />
</system.web>

<system.serviceModel>
    <behaviors>
        <endpointBehaviors>
            <behavior name="Ajax_Enabled_Wcf_Service.Service1AspNetAjaxBehavior">
                <enableWebScript />
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="true" />
    <services>
        <service name="Ajax_Enabled_Wcf_Service.Service1">
            <endpoint address=""   behaviorConfiguration="Ajax_Enabled_Wcf_Service.Service1AspNetAjaxBehavior"
               binding="webHttpBinding"  contract="Ajax_Enabled_Wcf_Service.Service1" />
        <!--<endpoint address="mex" binding ="mexHttpBinding"     contract="IMetadataExchange"/>-->
        </service>
    </services>
</system.serviceModel>

我尝试通过键入其URL来调用服务作为RESTFUL

http://localhost:50255/Service1.svc

因为我的绑定是webHttpBinding . 这给了我一个错误,说明在服务Service1实现的 Contract 列表中找不到 Contract 名称IMetadataExchange . 将ServiceMetadataBehavior直接添加到配置文件或ServiceHost以启用对此 Contract 的支持 . 当我发表评论时

<endpoint address="mex" binding ="mexHttpBinding"  contract="IMetadataExchange"/>

并尝试将我的Service1.svc文件从VS运行到浏览器中,表示此服务的元数据发布目前已禁用 .

然后我将webHttBinding更改为basicHttpBinding以获取SOAP服务并尝试通过WCF测试客户端添加它,它说无法添加服务 . 可能无法访问服务元数据 . 确保您的服务正在运行并公开元数据 .

我已经浏览过如此多的在线文章和谷歌搜索堆栈流本身,但没有什么对我有用 .