spcontext.current.web.currentuser에 대한 대안이 있습니까?
문제
SPContext.Current.Web.CurrentUser
가 정말로 신뢰할 수없는 것을 발견했습니다.객체가 null
로 돌아 오는 10 개의 요청 중 하나입니다.
SPContext.Current.Web.CurrentUser
대안이 있습니까?
다른 누구도 이러한 신뢰할 수 없었습니까?
거기에 고정되어 있습니까?
해결책
문제가되는 코드와 그 주변을 게시 한 경우에는 멋지게 될 것입니다. 그러나 내 머리 꼭대기에서 밖으로 고려해야 할 사항 :
- 라이프 사이클에서 너무 일찍 객체를 얻을 수 있습니다 (사경 메소드 및 httpmodule 등)
- httpContext를 null로 설정하는 것과 같은 일을하는 것과 같이 파이프 라인을 끊을 수 있습니다 (이전 전에 SharePoint 해결 방법에서 본 사항을 보았습니다)
- Apache 또는 Nginx와 같은 역방향 프록시 뒤에있을 수 있습니다. keepalives가 미친 듯이 만들고 환경 외부에서 코드를 테스트 해보십시오.
- 및 일부는 하드웨어 문제에 대한 "녹색 가벼운"입니다. 앱 풀은 앱 풀에 도달하는 앱 풀 또는 IT 부족, SQL Server 바쁜
- 통합 인증을 바나나로 만드는 일부 핀볼 로케이션을 사용할 수 있습니다
- FBA를 사용하는 경우 공급자 설정과 백엔드 가용성 (광고, XML 파일, SQL 멤버쉽)이 실패 할 수 있지만 이는 다른 오류가 발생하지 않을 것입니다.
- HttpModules 주위에 엉망이 된 섹션도 끊어지는 것을 좋아합니다. 변경 사항이 0으로 변경된 새로운 웹면에서 시도 했습니까?
- 나는 숫자 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 ()를 사용하여 시도합니다 ...
제휴하지 않습니다 sharepoint.stackexchange