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 参数的主要内容,如果未能解决你的问题,请参考以下文章

Ninject 3、WCF服务和参数化构造函数

如何更改 WCF 数据服务发布的 xml:base?

WCF 休息 | URL 参数不起作用 GetProduct/productid/format

WCF GET URL 长度限制问题:错误请求 - 无效 URL

将 JSON 数组发布到 WCF Rest 服务会导致空参数。数据合同?

如何从C#中的URL读取WCF服务的WSDL