2012-08-07 86 views
1

我正在处理我的第一个WCF服务,并在尝试在Visual Studio中启动服务时收到错误消息。所以,它将在卡西尼下运行。WCF错误 - '无法获取元数据'

的错误是:

Error: Cannot obtain Metadata from http://localhost:1393/BEService.svc 

这里是我的配置

  <behaviors> 
     <serviceBehaviors> 
      <behavior name="metadataBehavior"> 
       <serviceMetadata httpGetEnabled="true" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="metadataBehavior" name="DataServices.BEService"> 
      <endpoint address="" binding="basicHttpBinding" contract="DataServices.IBEService" /> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="http://localhost:1393" /> 
       </baseAddresses> 
      </host> 
     </service> 
    </services> 

这里是我的接口定义了服务合同:

[ServiceContract] 
    public interface IBEService 
    { 
     [OperationContract] 
     string Get271EDI(string EDI, DDKSLib.Enums.EDIRequestor requestor); 
    } 

下面是实现它的类:

public class BEService : IBEService 
    { 

     public string Get271EDI(string EDI, Enums.EDIRequestor requestor) 
     { 
      return "this is a test"; 
     } 
    } 

我错过了什么?

+0

您是否有一个接口来定义您的合同以及实现它的类?如果是这样,你可以请张贴代码吗? – Sam 2012-08-07 20:52:56

+0

已添加到问题中。 – 2012-08-07 21:03:45

+0

问题可能与在卡西尼上运行有关吗? – 2012-08-08 14:00:32

回答

0

更改WCF配置时,编辑器将所有配置移至app.config文件。然而,我读了很多文章引用的配置,而不是在web.config中。所以,我将它们移到了web.config并删除了app.config。一切都开始工作。然后,我遇到了this问题,它回答了我关于何时使用web.config和app.config的问题。

0

也许我错了,但我认为当端点是空的或相对的,并且您不使用IIS时,您需要使用基地址进行服务,不是吗?

<host> 
    <baseAddresses> 
     <add baseAddress="http://localhost:1393/MyService"/> 
    </baseAddresses> 
</host> 

这里是一篇关于WCF Addressing

编辑:您应该检查更进的细节,你的错误。我认为有一些内在的细节可以帮助你解决这个问题。这可能是因为您的实现中的某些内容不符合WCF规则。

+0

试着用相同的错误。更新了问题以显示更改。会阅读你的链接。 – 2012-08-07 21:20:54

+0

@BillMartin你的改变看起来不像Cristi所建议的。你错过了/ MyService/part。你确定要补充吗? – Sam 2012-08-08 14:19:25