WCF 数据服务和 url 参数

WCF Data service and url parameters

我创建了一个服务 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 class.

中的参数的解决方案

我找到了一个简单的解决方案:

protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
    CurrentDataSource.YourCustomVariable = DoWhatYouNeet(args.OperationContext);
    base.OnStartProcessingRequest(args);
}

WCF 服务允许通过覆盖传递请求参数的 OnStartProcessingRequest 来拦截每个调用,包括 DataServiceOperationContext 我们基本上可以在其中找到所有内容。