无法在演练之后发现服务:将WPF控件绑定到WCF数据服务

时间:2014-04-02 17:17:15

标签: wcf-data-services

我正在关注Walkthrough: Binding WPF Controls to a WCF Data Service

但是当我尝试发现该服务时,我收到一条错误消息,说从地址下载元数据时出错

enter image description here

它可能是什么?

修改

它基本上创建了一个ASP NET Web App,添加了一个ADO Nen实体模型,添加了一个WCF数据服务,向该解决方案添加了一个WPF应用程序,并尝试从该服务添加一个新的数据源,出现了Add Service Reference ,它就出现了错误。

2 个答案:

答案 0 :(得分:0)

只需将此添加到App.config中的ServiceModel配置

即可
  <services>
      <service name="AdventureWorksService"
               behaviorConfiguration="metadataSupport">
          <endpoint
              address="http://localhost:12141/AdventureWorksService/mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange"
          />
      </service>
  </services>
  <behaviors>
      <serviceBehaviors>
          <behavior name="metadataSupport">
              <serviceMetadata/>
          </behavior>
      </serviceBehaviors>
  </behaviors>    

答案 1 :(得分:0)

我的系统规范:

  • Windows 7 x64
  • MS SQL Server 2014
  • VS 2015社区教育
  • .net Framework 4.6.2

我正在执行相同的演练并按照thishttps://www.codeproject.com/Articles/1087982/Create-a-WCF-DataService-in-Visual-Studio?display=Print

传递了此错误

更改了斜体部分

在“创建服务”中进行以下更改。和&#39;配置服务&#39;演练的一部分。

CodeProject文章中的相关部分是步骤11:通过nugget命令行为OData添加实体框架提供程序。

  

PM&GT;安装包Microsoft.OData.EntityFrameworkProvider -Pre

和步骤12:编辑 AdventureWorksService .svc文件并:

  • 为System.Data.Services.Providers
  • 添加using语句
  • 将继承从DataService更改为EntityFrameworkDataService
  • 在我的案例中将更改为实体模型的名称 AdventureWorks2014Entities

任选地:

  • 设置实体名称的访问规则。使用星号表示所有实体。
  • 设置UseVerboseErrors属性以查看正确的反馈 错误。
using System.Data.Services.Providers;

namespace AdventureWorksService
{
    public class AdventureWorksService : EntityFrameworkDataService<AdventureWorks2014Entities>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
            // Examples:
            // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
            // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
            config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All);
            config.UseVerboseErrors = true;
        }
    }
}

然而,现在我仍然坚持定义窗口的用户界面&#39;演练:(

编辑1:在回答here之后,我设法完成了演练。

Sryn