gpt4 book ai didi

visual-studio-2008 - 为什么我的 WCF 数据服务客户端代理代码中缺少我的 ServiceOperation 方法?

转载 作者:行者123 更新时间:2023-12-04 10:58:40 25 4
gpt4 key购买 nike

我有一个简单的 WCF 数据服务服务,我想公开一个服务操作,如下所示:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class ProductDataService : DataService<ProductRepository>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(IDataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*",
EntitySetRights.ReadMultiple | EntitySetRights.ReadSingle);
config.SetServiceOperationAccessRule("*",
ServiceOperationRights.All);
config.UseVerboseErrors = true;
}

// This operation isn't getting generated client side
[WebGet]
public IQueryable<Product> GetProducts()
{
// Simple example for testing
return (new ProductRepository()).Product;
}

为什么不是 GetProducts当我在客户端上添加服务引用时,方法是否可见?

我正在运行 Visual Studio 2008 SP1 和 .NET Framework 3.5 SP1。我还下载并安装了此更新:

MS KB: 976127 - An update is available that provides additional features and improvements for ADO.NET Data Services in the .NET Framework 3.5 SP1 on a computer that is running Windows 7 or Windows Server 2008 R2

最佳答案

终于解决了这个问题。要在数据服务类上调用服务操作,您需要使用数据服务上下文对象的 CreateQueryExecute方法。例如:

ProductDataService ctx = new ProductDataService(
new Uri("http://localhost:1234/ProductDataService.svc/"));

// Method 1:
DataServiceQuery<Product> q = ctx.CreateQuery<Product>("GetProducts");
List<Product> products = q.Execute().ToList();

// Method 2:
Uri uri = new Uri(String.Format("{0}GetProducts", ctx.BaseUri),
UriKind.RelativeOrAbsolute);
List<Product> products = ctx.Execute<Product>(uri).ToList();

如果需要参数,请说具有以下签名的服务操作的产品类别:
[WebGet]
public IQueryable<Product> GetProducts(string category)

我们会这样做:
// Method 1:
DataServiceQuery<Product> q = ctx.CreateQuery<Product>("GetProducts")
.AddQueryOption("category", "Boats") ;
List<Product> products = q.Execute().ToList();

// Method 2:
Uri uri = new Uri(String.Format("{0}GetProducts?category={1}",
ctx.BaseUri, "Boats"), UriKind.RelativeOrAbsolute);
List<Product> products = ctx.Execute<Product>(uri).ToList();

关于visual-studio-2008 - 为什么我的 WCF 数据服务客户端代理代码中缺少我的 ServiceOperation 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com