是否有SPContext的替代方案。电流。网络。当前用户?
题
我发现 SPContext.Current.Web.CurrentUser
真的不靠谱。该对象的十个请求中有一个返回为 null
.
有没有替代方案 SPContext.Current.Web.CurrentUser
?
有没有其他人看到这种不可靠性?
外面有修复吗?
解决方案
如果你发布违规代码及其周围环境,那将是很酷的,但有些事情要考虑我的头顶:
- 您可能在生命周期中过早地获取对象(比如PreInit方法等,或者HttpModule等)
- 您可能会破坏管道,例如将HttpContext设置为null(我以前在SharePoint解决方法中看到过)
- 您可能落后于像Apache或Nginx这样的反向代理,使您的KeepAlives变得疯狂,尝试在您的环境之外测试代码
- 对于硬件问题,应用程序池到达maxium RAM或缺少它,SQL Server繁忙,有些"是绿灯"
- 您可能正在使用一些PInvoke模拟,使集成身份验证变得香蕉
- 如果您使用的是FBA,则提供程序设置和后端可用性(AD,XML文件,SQL成员资格)可能会失败-但这不太可能,因为这是一个不同的错误。
- 一个混乱的HttpModules部分也喜欢打破东西,你有没有尝试过一个新的WebApplication与零变化?
- 我喜欢数字八,所以我想我应该给它八个模糊的想法
TL;DR:发布您的代码:)
其他提示
当我忘记我把它称为断章取义时,我才经历过这种情况。
你确定你不是想把它叫做内部吗? SPSecurity.RunWithElevatedPrivileges()
?
plz试试这个。.
SPWeb spWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(System.Web.HttpContext.Current);
SPUser user = spWeb.CurrentUser;
或
using (SPSite spsite = new SPSite(url))
{
using (SPWeb spweb = spsite.OpenWeb())
{
userObj = spweb.CurrentUser;
}
}
plz也尝试使用RunWithElevatedPreviliges()。..