如何在StructureMap中映射IAuthenticationManager实现



我很难同时使用StructureMap和Microsoft AspNet Identity,因为我似乎不知道如何映射IAuthenticationManager的实现。根据下面的例子,我试图在DefaultRegistry中显式映射它。

   public class DefaultRegistry : Registry {
        public DefaultRegistry() {
            Scan(
                scan => {
                    scan.TheCallingAssembly();
                    scan.WithDefaultConventions();
                    scan.With(new ControllerConvention());
                });
            For<IAuthenticationManager>().Use(() => HttpContext.Current.GetOwinContext().Authentication);
        }
   }

主要的问题是HttpContext.Current总是为null,但我甚至不确定这是否有效,即使它不是null。我是StructureMap和AspNet Identity的新手,所以如果我在这里做任何愚蠢的事情,请随时给我打电话。谢谢你的帮助!

这本身并不是StructureMap的问题。HttpContext.Current只能在ASP.Net中的HTTP请求中使用。如果您想在StructureMap中使用HttpContext,我建议您要么确保优雅地检查null,要么尝试切换到使用HttpContextWrapper/HttpContextBase抽象,这样您就可以在测试中在ASP.Net之外运行该代码。

上面的代码似乎运行得很好,我不确定为什么它以前似乎不起作用。我不知道解决这个问题的协议是什么,但我不希望任何人认为他们不能使用上面的内容作为参考,因为它是有效的。

相关内容

  • 没有找到相关文章