首页 > 解决方案 > ServiceStack:AppHost 不支持通过 Singleton 访问当前请求

问题描述

尝试this.SessionAs<T>在我的一项服务中使用时遇到以下异常:

“AppHost 不支持通过单例访问当前请求”

有问题的代码位于构造函数中。奇怪的是,我只在使用 POST 动词时才看到这一点。我还不确定这是否只是巧合。

我很抱歉此时没有提供详细信息。我试图弄清楚我的故障排除应该采取哪个方向。我会根据需要进行编辑。

谢谢

更新 - 堆栈跟踪

在 ServiceStack.HostContext.GetCurrentRequest() 在 ServiceStack.SessionFeature.GetOrCreateSession[T](ICacheClient cache, IRequest httpReq, IResponse httpRes) 在 ServiceStack.Service.SessionAsTUserSession 在 PeruseServiceStack.Services.Settings.UserService..ctor() 在 lambda_method(Closure , Container ) 在 Funq.Container.ResolveImpl[TService](String name, Boolean throwIfMissing)

稍后我会进一步更新,我觉得这个痕迹是不完整的。

标签: c#.nethttpservicestack

解决方案


从 StackTrace 看起来您正试图SessionAs<T>在您的UserService构造函数中进行访问,这是您无法做到的,因为 Session 只能在 Request 的上下文中访问,而 Service 构造函数无权访问注入的IRequest上下文以便能够访问会话。

因此,您需要将SessionAs<T>()调用从构造函数移到 Service 实现中。


推荐阅读