2012-08-07 172 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