2015-05-04 61 views
1

這是我使用MSDN網站的教程編程ap WCF服務的第一步。使用WCF服務的錯誤

我做了什麼:

  1. 創建服務項目(在VS 2013 ASP.NET Web應用程序)
  2. 創建一個實體數據模型從現有的MS示例數據庫(EF 6)(AdventureWorksLT)包括數據庫表
  3. 創建服務(「添加新項」模板「WCF數據服務」名稱「AdventureWorksService」)
  4. 配置通過複製服務和粘貼的源代碼從MSDN網站的服務
  5. 通過添加新的WPF應用程序模板,以解決
  6. 從類型對話框中的「服務」
  7. 添加新的數據源創建WPF客戶端應用程序「添加服務引用」我點擊了「發現」 創建的服務「AdventureWorksService」出現在地址爲「http://localhost:53948/AdventureWorksService.svc」的可用服務列表中。

現在我必須點擊「確定」按鈕才能下載服務信息。此時,我收到一個錯誤消息(請注意,我使用的是德語Visual Studio,因此翻譯可能與英文版本中的原始消息不匹配:

「錯誤:無法從地址獲取元數據。 ,該地址是正確的」

如果我點擊LinkLabel的 「詳細資料」,我得到了以下信息:

**Error: Cannot obtain Metadata from "http://localhost:53948/AdventureWorksService.svc/_vti_bin/ListData.svc/$metadata".** 
 

 
-- 
 
<?xml version="1.0" encoding="utf-8"?> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
    ... 
 
</html> 
 
--. 
 
Metadata contains a reference that cannot be resolved: "http://localhost:53948/AdventureWorksService.svc". 
 
The contenttype "text/html" of the message doesn't match with the content type of the binding (application/soap+xml; charset=utf-8).

有沒有的App.config在服務工程中的噸,但一個web.config:

<?xml version="1.0" encoding="utf-8"?> 
 
<!-- 
 
    Weitere Informationen zum Konfigurieren der ASP.NET-Anwendung finden Sie unter 
 
    http://go.microsoft.com/fwlink/?LinkId=169433 
 
    --> 
 
<configuration> 
 
    <configSections> 
 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
 
    </configSections> 
 
    <system.web> 
 
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" /> 
 
    <httpRuntime targetFramework="4.5" /> 
 
    </system.web> 
 
    <connectionStrings> 
 
    <add name="AdventureWorksLTEntities" connectionString="metadata=res://*/AdventureWorksModel.csdl|res://*/AdventureWorksModel.ssdl|res://*/AdventureWorksModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MB-SQL2008;initial catalog=AdventureWorksLT;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
 
    </connectionStrings> 
 
    <entityFramework> 
 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
 
     <parameters> 
 
     <parameter value="mssqllocaldb" /> 
 
     </parameters> 
 
    </defaultConnectionFactory> 
 
    <providers> 
 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
 
    </providers> 
 
    </entityFramework> 
 
    <system.serviceModel> 
 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
 
    </system.serviceModel> 
 
</configuration>

我想它與HTTP的協議,這是不在服務定義的事情。

你能幫我做些什麼嗎?我希望,我已經發布了所有必要的信息。

感謝 邁克爾

+0

你能告訴我你的web.config,好像 – Coder1409

+0

我在加入它不支持元數據原來的帖子。謝謝。 –

+0

我發佈了一個答案,可以解決你的問題,如果它不工作,把教程鏈接,所以我可以看到代碼,找出缺少的東西 – Coder1409

回答

0

嘗試system.servicemodel標籤中添加元數據,這樣

<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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></behaviors>