c# - 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)
稍后我会进一步更新,我觉得这个痕迹是不完整的。
解决方案
从 StackTrace 看起来您正试图SessionAs<T>
在您的UserService
构造函数中进行访问,这是您无法做到的,因为 Session 只能在 Request 的上下文中访问,而 Service 构造函数无权访问注入的IRequest
上下文以便能够访问会话。
因此,您需要将SessionAs<T>()
调用从构造函数移到 Service 实现中。
推荐阅读
- performance - 缓存以下语言 PlayFramework 2 和 ehcache
- oracle - Tuxedo 客户端 12 崩溃
- git - 在证书错误中安装 Git for Windows 失败
- r - 计算每三个新值的偏差
- ios - Swift iOS 12 - 如何摆脱 Continue 按钮生成的字符 Partial Line Forward (U+008B)
- shopify - 如何在 Shopify 产品页面中显示产品变体元字段的输出?
- rethinkdb - 只有 2 个节点的 Rethinkdb 故障转移集群
- excel - 另一个工作表中的公式如何自动检测 Excel 中的新行?
- sql - SQL 中的变量 -> 错误 PLS-00103:遇到符号“SELECT”
- c# - 我怎样才能在 c#( 压缩代码) 中正确地做到这一点