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
我们基本上可以在其中找到所有内容。
我创建了一个服务 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
我们基本上可以在其中找到所有内容。