我创建了一个服务std::vector<T> arr
,在我的Visual Studio项目中添加了WCF服务项目。它的定义如下:
service.svc
和上下文:
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;
}
}
}
来使用的。
我很想知道是否可以将参数添加到url,以便在服务器端使用它们来过滤项目。例如http://localhost:53407/Service.svc/Items
可能吗?怎么样?
我找到了this,但是我正在寻找一种可以使用http://localhost:53407/Service.svc/Items?year=2019
类中的参数的解决方案。
答案 0 :(得分:0)
我找到了一个简单的解决方案:
IndexError
WCF服务允许通过覆盖protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
CurrentDataSource.YourCustomVariable = DoWhatYouNeet(args.OperationContext);
base.OnStartProcessingRequest(args);
}
来拦截每个呼叫,该OnStartProcessingRequest
传递包括DataServiceOperationContext
在内的请求参数,我们基本上可以找到所有内容。