为什么HttpContext.Current.User.Identity.Name在webpart中使用时返回错误的用户名?

时间:2009-11-19 12:13:25

标签: sharepoint iis identity

在Sharepoint网页中,我在识别登录用户时遇到问题!

主页包含显示用户名

的普通ootb控件
<%@ Register TagPrefix="wssuc" TagName="Welcome" Src="~/_controltemplates/Welcome.ascx" %>
.....
.....
<wssuc:Welcome id="explitLogout" runat="server" />

这始终显示正确的登录用户。

但是如果我打电话

HttpContext.Current.User.Identity.Name

来自webpart然后在1%或2%的情况下,我将返回错误的名称。

这给了我一个页面,其顶部有正确的用户名,而webpart中的用户名不正确。在webpart中获取名称的其他方法返回相同的错误名称。如果名称检查器webpart多次在同一页面上,那么很少有第二份webpart副本具有正确的名称或第三个不正确的标识!

身份存储在Active Directory中,并且用户对ISA服务器进行身份验证,用户与SharePoint基础结构不在同一个域中。 sharepoint场与ISA服务器,四个Web前端,一个应用服务器以及最后一个数据库服务器相当复杂。

有没有人在此之前发生过这种情况?或者对我应该采取的调查问题的方向有任何线索!

服务器在服务器2003上运行IIS6.Sharepoint位于SP2,但没有最新的补丁。

其他: 输出缓存已启用。经过身份验证的缓存配置文件是“Intranet” 该配置文件的设置如下

Title                       Intranet (Collaboration Site) 
Display Name                  (BLANK)
Display Description     Optimized for collaboration sites where authoring, web part cusomization, and minor version are enabled. 
Perform ACL Check       Yes 
Enabled                 Yes 
Duration                180 
Check for Changes       Yes 
Vary by Custom Parameter      (BLANK)    
Vary by HTTP Header     Browser 
Vary by Query String Parameters     (BLANK)      
Vary by User Rights     Yes 
Cacheability            ServerAndPrivate 
Safe for Authenticated Use  Yes 
Allow writers to view cached content   (BLANK)        

2 个答案:

答案 0 :(得分:1)

SharePoint在应用程序池帐户下运行。你需要使用 SPContext.Current.Web.CurrentUser.LoginName 获得当前用户。

答案 1 :(得分:0)

这是前一段时间,我很抱歉没有回复我们的解决方案......现在我不清楚它是什么!与我们误解的甜甜圈缓存有关。

http://blogs.catapultsystems.com/tlingenfelder/archive/2011/03/24/sharepoint-caching-techniques.aspx