문제

SPContext.Current.Web.CurrentUser가 정말로 신뢰할 수없는 것을 발견했습니다.객체가 null로 돌아 오는 10 개의 요청 중 하나입니다.

SPContext.Current.Web.CurrentUser 대안이 있습니까?

다른 누구도 이러한 신뢰할 수 없었습니까?

거기에 고정되어 있습니까?

도움이 되었습니까?

해결책

문제가되는 코드와 그 주변을 게시 한 경우에는 멋지게 될 것입니다. 그러나 내 머리 꼭대기에서 밖으로 고려해야 할 사항 :

  1. 라이프 사이클에서 너무 일찍 객체를 얻을 수 있습니다 (사경 메소드 및 httpmodule 등)
  2. httpContext를 null로 설정하는 것과 같은 일을하는 것과 같이 파이프 라인을 끊을 수 있습니다 (이전 전에 SharePoint 해결 방법에서 본 사항을 보았습니다)
  3. Apache 또는 Nginx와 같은 역방향 프록시 뒤에있을 수 있습니다. keepalives가 미친 듯이 만들고 환경 외부에서 코드를 테스트 해보십시오.
  4. 및 일부는 하드웨어 문제에 대한 "녹색 가벼운"입니다. 앱 풀은 앱 풀에 도달하는 앱 풀 또는 IT 부족, SQL Server 바쁜
  5. 통합 인증을 바나나로 만드는 일부 핀볼 로케이션을 사용할 수 있습니다
  6. FBA를 사용하는 경우 공급자 설정과 백엔드 가용성 (광고, XML 파일, SQL 멤버쉽)이 실패 할 수 있지만 이는 다른 오류가 발생하지 않을 것입니다.
  7. HttpModules 주위에 엉망이 된 섹션도 끊어지는 것을 좋아합니다. 변경 사항이 0으로 변경된 새로운 웹면에서 시도 했습니까?
  8. 나는 숫자 8을 좋아합니다. 그래서 나는 8 개의 모호한 아이디어를 주어야한다고 생각했습니다.

    tl; DR : 코드 게시 :)

다른 팁

나는 그것을 맥락에서 밖으로 부르는 것을 잊을 때만 이걸 경험했습니다.

SPSecurity.RunWithElevatedPrivileges() 내에서이를 호출하려고하지 않으셨습니까?

plz이 try를 사용해보십시오.

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 ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top