gpt4 book ai didi

servicestack - 从 ServiceRunner 访问调用服务?

转载 作者:行者123 更新时间:2023-12-04 04:54:43 25 4
gpt4 key购买 nike

我要访问调用Service从内部 ServiceRunner OnBeforeRequest()方法以获取调用服务类中的对象。在MVC中,我可以创建一个类BaseController覆盖 OnActionExecuting()我可以到 Data容易。但是,使用 ServiceRunner ,因为它不是从 Service 派生的,所以我看不到访问 Service 的方法。对象。

sample 服务:

public class ProductsService : Service
{
private MyData _data = new MyData();

public MyData Data
{
get { return _data; }
}

public object Get(GetProduct request)
{
// ...
return product;
}
}

在我的自定义 ServiceRunner , 如何检索 ProductsService来自 OnBeforeRequest() 的对象这样我就可以到达 Data ?

public class MyServiceRunner<T> : ServiceRunner<T>
{
public override void OnBeforeExecute(IRequestContext requestContext, T request)
{
// var productService = ?

base.OnBeforeExecute(requestContext, request);
}
}

最佳答案

经过多次挖掘,这似乎无法完成。服务操作在 ServiceRunner 中可用作为未命名的 lamdba 代表。没有对服务的引用。

我找到了一个解决方法。我第一次在 AppHost.Configure() 注册了 MyData使用

container.RegisterAutoWired<MyData>();

我将 MyData 声明移动到一个过滤器属性,如下所示:
public class UseMyDataAttribute : RequestFilterAttribute
{
public MyData Data { get; set; } // injected by Funq IoC.

public override void Execute(IHttpRequest req, IHttpResponse res, object responseDto)
{
Data.SessionID = req.GetSessionId();
}
}

这样我就可以申请 [UseMyData]ProductsService类并能够将 session ID 设置为 Data .

关于servicestack - 从 ServiceRunner 访问调用服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16923071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com