无法使用WCF获取元数据

时间:2012-12-03 03:44:05

标签: c# wcf web-services

我正在尝试设置一个返回JSON对象的Web服务,我正在关注这个tutorial但是当我去尝试运行它时我得到了这个错误

  

错误:无法从http://localhost:10995/Service1.svc获取元数据   如果这是您的Windows(R)Communication Foundation服务   有权访问,请检查您是否已启用元数据发布   指定的地址。有关启用元数据发布的帮助,请   请参阅MSDN文档   http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流   错误URI:http://localhost:10995/Service1.svc元数据包含   无法解决的引用:   的 'localhost:10995 / Service1.svc'。远程服务器返回   意外的响应:(405)方法不允许。远程服务器   返回错误:(405)方法不允许.HTTP GET错误URI:   http://localhost:10995/Service1.svc下载时出错   http://localhost:10995/Service1.svc。请求因HTTP失败   状态404:未找到。

所以我尝试查找这意味着什么并遇到这些链接以尝试修复它

WCF - Cannot obtain Metadata

WCF - Error: Cannot obtain Metadata

Error: Cannot obtain Metadata from WCF service

WCF Test Client cannot add service, cannot obtain metadata

但他们都没有解决问题。这是我第一次尝试做任何类型的Web服务,我今天开始研究,所以显然我对这一切都是新手。

这个错误是什么意思,我该如何修复它以便我可以测试它?

<system.serviceModel>
<services>
  <service name="WcfService4.Service1" behaviorConfiguration="WcfService4.Service1Behavior">
    <!-- Service Endpoints -->
    <endpoint address="../Service1.svc"
      binding="webHttpBinding"
      contract="WcfService4.IService1"
      behaviorConfiguration="webBehaviour" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="WcfService4.Service1Behavior">
      <!-- To avoid disclosing metadata information, set the value below to false before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="webBehaviour">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

3 个答案:

答案 0 :(得分:0)

它不仅仅是一个错字吗?

contract="WcfService4e.IService1" 

它应该是

contract="WcfService4.IService1"

答案 1 :(得分:0)

试试这个

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>

答案 2 :(得分:0)

  

将命名空间名称与您的服务名称和合同名称一起使用...请参阅   下面的代码片段:

<service name="WcfService3.Service1"
 behaviorConfiguration="ServiceBehavior">
>         
<endpoint address="../Service1.svc" binding="wsHttpBinding" contract="WcfService3.IService1">

其中“WcfService3”是namespcae。