gpt4 book ai didi

c# - 我可以将依赖项注入(inject) ServiceStack 请求过滤器吗?

转载 作者:太空狗 更新时间:2023-10-29 21:44:58 25 4
gpt4 key购买 nike

我可以成功地将依赖项注入(inject)到我的 ServiceStack 服务中,但现在我需要将依赖项注入(inject)到请求过滤器中。然而,这似乎不是以同样的方式工作。

这是我的过滤器(它只是检查源 IP 是否在批准的列表中;这是我要注入(inject)的列表):

 public class CheckIPFilter : RequestFilterAttribute
{
private readonly IList<string> _IPAddresses = new List<string>();

public CheckIPFilter() { }

public CheckIPFilter(IList<string> IPAddresses)
{
_IPAddresses = IPAddresses;
}

public override void Execute(ServiceStack.ServiceHost.IHttpRequest req, ServiceStack.ServiceHost.IHttpResponse res, object requestDto)
{
if (!_IPAddresses.Contains(req.UserHostAddress))
{
var errResponse = DtoUtils.CreateErrorResponse("401", "Unauthorised", null);
var responseDto = DtoUtils.CreateResponseDto(requestDto, new ResponseStatus("401", "Unauthorised"));
var contentType = req.ResponseContentType;
var serializer = EndpointHost.AppHost.ContentTypeFilters.GetResponseSerializer(contentType);
res.ContentType = contentType;

var serializationContext = new HttpRequestContext(req, res, responseDto);
serializer(serializationContext, responseDto, res);
res.EndRequest(); //stops further execution of this request

return;
}
}
}

这是我的 global.asax 中的内容:

var IPAddresses = new List<string>() 
{ "99.99.99.99", "99.99.99.99", "99.99.99.99", "99.99.99.99" };

container.Register<IList<string>>(IPAddresses);

_IPAddresses 始终为空。

我想我一定是遗漏了一些基本的东西。有没有更好的方法来解决这个问题?

最佳答案

对过滤器属性使用属性注入(inject)而不是构造函数注入(inject),因为它们是克隆的并且公共(public)属性是自动连接的,而不是像从 IOC 实例化和自动连接的所有其他东西一样创建的。

关于c# - 我可以将依赖项注入(inject) ServiceStack 请求过滤器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711658/

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