首页 > 解决方案 > WCF 数据服务和 url 参数

问题描述

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
有可能吗?如何?

我找到了这个,但我正在寻找一个可以在MyContext类中使用参数的解决方案。

标签: wcf-data-servicesurl-parameters

解决方案


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

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

WCF 服务允许通过重写OnStartProcessingRequest传递请求参数来拦截每个调用,包括DataServiceOperationContext我们在哪里找到基本上所有内容。


推荐阅读