我有一个简单的servicestack自托管应用程序,除了其他所有尝试使用身份验证之外。在AppHost构造函数中,我打电话
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[]
{
new RoomsAuthProvider(),
}));
但在调用期间我总是得到空引用异常。我尝试分离调用 - 在一个字符串中创建auth功能,在另一个字符串中添加 - AuthFeature创建失败。我也试过打电话
Container.Register(new MemoryCacheClient());
这没有任何改变。欢迎提出任何想法。附上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()
答案 0 :(得分:2)
在AppHost构造函数中,我打电话
不要在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
依赖项。