ServiceStack IOC not injecting property in Attribute (object is null)

lyov

New Member
I'm trying to log/persist all my requests/responses, and thought that I give it a try with a global attribute, but when I go to actually using the repo, it's null? Is this possible? Are there other ways to achieve what I'm looking to do?Thank you,StephenAttribute\[code\][AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]public class LogRequestAttribute : RequestFilterAttribute { public IRepository Repo { get; set; } public LogRequestAttribute(ApplyTo applyTo) : base(applyTo) { this.Priority = -200; } public LogRequestAttribute() : this(ApplyTo.All) {} public override void Execute(IHttpRequest req, IHttpResponse res, object requestDto) { try { // Convert the req obj into something that can be persisted... Repo.LogRequest("Logging the rquest"); } catch (Exception ex) { System.Diagnostics.Trace.TraceError(ex.ToString()); } }}\[/code\]AppHost Config\[code\]public override void Configure(Container container){ //Set JSON web services to return idiomatic JSON camelCase properties ServiceStack.Text.JsConfig.EmitCamelCaseNames = true; //Show StackTrace in Web Service Exceptions SetConfig(new EndpointHostConfig { DebugMode = true }); //Register any dependencies you want injected into your services container.Register<ICacheClient>(new MemoryCacheClient());/* // Redis container.Register<IRedisClientsManager>(c => new PooledRedisClientManager()); container.Register<IRepository>(c => new Repository(c.Resolve<IRedisClientsManager>()));*/ container.Register<IRepository>(new Repository()); container.Register<IBusinessService>(new BusinessService()); //Configure Custom User Defined REST Paths for your services /*ConfigureServiceRoutes();*/ //Add a request filter to check if the user has a session initialized /*this.RequestFilters.Add((httpReq, httpResp, requestDto) => { var sessionId = httpReq.GetCookieValue("user-session"); if (sessionId == null) { httpResp.ReturnAuthRequired(); } });*/ RequestFilters.Add((httpReq, httpResp, requestDto) => new LogRequestAttribute().Execute(httpReq, httpResp, requestDto));}\[/code\]Repository\[code\]public interface IRepository{ void LogRequest(string request); void LogResponse(string request);}public class Repository : IRepository{ private static readonly ILog Log = LogManager.GetLogger("API.Repository"); public Repository() { } public void LogRequest(string request) { Log.Debug(request); } public void LogResponse(string request) { Log.Debug(request); }}\[/code\]
 
Back
Top