2

当我运行 WCF 测试客户端时,出现错误:

错误:无法从 localhost:52875/ControllersInfo.svc 获取元数据 如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。
元数据包含无法解析的引用:localhost:52875/ControllersInfo.svc'。在 localhost:52875/ControllersInfo.svc 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。

这是我的web.config文件

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
  </system.web>
  <system.serviceModel>
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint helpEnabled="true" automaticFormatSelectionEnabled="true" />
      </webHttpEndpoint>
    </standardEndpoints>
    <services>
      <service name="dev_FineReceiptsService.ControllersInfo">
        <endpoint kind="webHttpEndpoint" contract="dev_FineReceiptsService.IControllersInfo" />
      </service>
    </services>
  </system.serviceModel>
  <connectionStrings>
    <add name="FineReceiptsTestEntities" connectionString="metadata=res://*/FineTest.csdl|res://*/FineTest.ssdl|res://*/FineTest.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=msdev01;Initial Catalog=FineReceiptsTest;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

谁能告诉我我做错了什么?

我试图找到类似的问题,但没有一个对我有帮助。

4

2 回答 2

0

您的服务是基于 REST 的服务(因为您指定了webHttpBinding)。

然而,WCF 测试客户端是一个基于 SOAP 的测试工具——你可以用它来测试SOAP服务——basicHttpBinding等等wsHttpBinding

但是你不能使用基于 SOAP 的 WCF 测试客户端来测试你的基于 REST 的 WCF 服务……那是行不通的。使用普通的网络浏览器,可能结合 Fiddler 或类似的东西来测试你的 REST 服务。

于 2012-10-05T09:10:15.137 回答
0

元数据端点公开描述SOAP服务的 WSDL + XSD。不支持为 REST 公开元数据。由于您使用的是 webHttpEndpoint,因此您不能使用 WCFTestClient。要测试 Rest 服务,可以使用RestSharp或 Browser。

如果您需要通过简化配置将元数据添加到 SOAP 服务,您需要添加以下行为:

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
于 2012-10-05T09:10:20.933 回答