Tôi có thể tiêm phụ thuộc thành công vào các dịch vụ ServiceStack của mình nhưng bây giờ tôi cần phải đưa một phụ thuộc vào Bộ lọc yêu cầu. Tuy nhiên điều này dường như không hoạt động theo cùng một cách.Tôi có thể tiêm phụ thuộc vào Bộ lọc yêu cầu ServiceStack không?
Dưới đây là bộ lọc của tôi (nó chỉ đơn giản là kiểm tra xem IP nguồn là trong một danh sách đã được phê duyệt; nó là danh sách này, tôi đang cố gắng để tiêm):
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;
}
}
}
Đây là những gì trong global.asax của tôi:
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);
_IPĐịa chỉ luôn rỗng.
Tôi đoán tôi phải thiếu một số thứ cơ bản ở đây. Có cách nào tốt hơn để tiếp cận điều này?
Tuyệt vời, cảm ơn bạn. – Simon