WCF 数据服务和 url 参数
Posted
技术标签:
【中文标题】WCF 数据服务和 url 参数【英文标题】:WCF Data service and url parameters 【发布时间】:2019-11-23 15:30:38 【问题描述】:我创建了一个服务service.svc
,在我的 Visual Studio 项目中添加了一个 WCF 服务项。它定义如下:
public class Service : DataService<MyContext>
public static void InitializeService(DataServiceConfiguration config)
config.UseVerboseErrors = true;
config.SetEntitySetAccessRule("Items", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
protected override void HandleException(HandleExceptionArgs args)
Email.SendErrorToDeveloper(args.Exception);
base.HandleException(args);
还有上下文:
public class MyContext
public IQueryable<Item> Items
get
return something;
作为定义,服务被调用http://localhost:53407/Service.svc/Items
。
我正在寻找是否有办法向 url 添加参数,以便在服务器端使用它们来过滤项目。例如http://localhost:53407/Service.svc/Items?year=2019
可能吗?怎么样?
我找到了this,但我正在寻找一个可以使用MyContext
类中的参数的解决方案。
【问题讨论】:
【参考方案1】:我找到了一个简单的解决方案:
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
CurrentDataSource.YourCustomVariable = DoWhatYouNeet(args.OperationContext);
base.OnStartProcessingRequest(args);
WCF 服务允许通过覆盖 OnStartProcessingRequest
来拦截每个调用,该调用传递包括 DataServiceOperationContext
在内的请求参数,我们基本上可以在其中找到所有内容。
【讨论】:
以上是关于WCF 数据服务和 url 参数的主要内容,如果未能解决你的问题,请参考以下文章
WCF 休息 | URL 参数不起作用 GetProduct/productid/format
WCF GET URL 长度限制问题:错误请求 - 无效 URL