ServiceStack AuthFeature 空引用异常

ServiceStack AuthFeature null reference exception

我有一个简单的 servicestack 自托管应用程序,除了其他所有内容外,它还尝试使用身份验证。在 AppHost 构造函数中,我调用了

                Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                new IAuthProvider[]
                {
                    new RoomsAuthProvider(),
                }));

但我在那个调用期间总是得到空引用异常。我试过分离调用 - 在一个字符串中创建身份验证功能,在另一个字符串中添加 - AuthFeature 创建失败。我也试过打电话

                Container.Register(new MemoryCacheClient());

这没有任何改变。附上任何想法welcome.Stacktrace

ServiceStack.AuthFeature.<.ctor>b__a(String s)
ServiceStack.AuthFeature..ctor(Func`1 sessionFactory, IAuthProvider[] authProviders, String htmlRedirect)
CoreServer.Program.AppHost..ctor() в C:\Users\Sorrow\documents\visual studio 2015\Projects\RoomsServicestack\CoreServer\Program.cs
CoreServer.Program.Main(String[] args) в C:\Users\Sorrow\documents\visual studio 2015\Projects\RoomsServicestack\CoreServer\Program
System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
System.Threading.ThreadHelper.ThreadStart()

In AppHost constructor i make a call

不要在 AppHost 构造函数中注册任何插件,所有配置都应在 AppHost.Configure() 内进行,例如:

public override void Configure(Container container)
{
    Plugins.Add(new AuthFeature(() => new AuthUserSession(),
        new IAuthProvider[] {
            new RoomsAuthProvider(),
        }));
}

这与您的问题无关,但如果您想注册 Caching Provider,则需要针对 ICacheClient 界面进行注册,例如:

Container.Register<ICacheClient>(new MemoryCacheClient());

这将让您通过 ICacheClient 接口解决依赖关系:

var cache = Container.Resolve<ICacheClient>();

这是必需的,因为任何使用缓存的内置服务都会解析已注册的 ICacheClient 依赖项。