我发现 SPContext.Current.Web.CurrentUser 真的不靠谱。该对象的十个请求中有一个返回为 null.

有没有替代方案 SPContext.Current.Web.CurrentUser?

有没有其他人看到这种不可靠性?

外面有修复吗?

有帮助吗?

解决方案

如果你发布违规代码及其周围环境,那将是很酷的,但有些事情要考虑我的头顶:

  1. 您可能在生命周期中过早地获取对象(比如PreInit方法等,或者HttpModule等)
  2. 您可能会破坏管道,例如将HttpContext设置为null(我以前在SharePoint解决方法中看到过)
  3. 您可能落后于像Apache或Nginx这样的反向代理,使您的KeepAlives变得疯狂,尝试在您的环境之外测试代码
  4. 对于硬件问题,应用程序池到达maxium RAM或缺少它,SQL Server繁忙,有些"是绿灯"
  5. 您可能正在使用一些PInvoke模拟,使集成身份验证变得香蕉
  6. 如果您使用的是FBA,则提供程序设置和后端可用性(AD,XML文件,SQL成员资格)可能会失败-但这不太可能,因为这是一个不同的错误。
  7. 一个混乱的HttpModules部分也喜欢打破东西,你有没有尝试过一个新的WebApplication与零变化?
  8. 我喜欢数字八,所以我想我应该给它八个模糊的想法

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()。..

许可以下: CC-BY-SA归因
scroll top