为什么我得到i:0#.w | domain \\ username和RunWithElevatedPrivileges domain \ apppool?

时间:2016-04-17 14:20:59

标签: c# sharepoint sharepoint-2013

当我做的时候

$ date > filename
$ export filename=len
$ cat 'fi'"$filename"'ame'
Sun Apr 17 16:20:20 CEST 2016

我收到以下回复:

Console.WriteLine(SPContext.Current.Web.CurrentUser.LoginName);

当我做的时候

i:0#.w|domain\\username

我得到了

SPSecurity.RunWithElevatedPrivileges(delegate() {
    Console.WriteLine(SPContext.Current.Web.CurrentUser.LoginName);
});

在登录名中没有domain\appPoolAccount ....

有人能解释为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

用户名之前的前缀(i:0#.w |)只是一个内部代码,因此SharePoint可以识别身份验证的类型(w:windows auth,f:formsbased等等)。代码中的i用于标识它是用户。仅供参考,如果您尝试写出一个组,前缀将是c而不是i。

你在raiseprivileges中没有前缀的事实是,这将始终是admin / pool-account,它永远是windows用户 - 所以不需要添加前缀...

答案 1 :(得分:0)

前缀(i:0#.w |)用于基于声明的身份验证,这是您的SharePoint 2013 Web应用程序所在,并且没有提升的权限将解析为登录帐户(基于声明)。但是,当您使用Elevated Privileges运行时,您将使用应用程序池用户运行,该用户是您的案例中的Windows域用户,您可以在运行SharePoint 2013的服务器上的IIS中找到该用户。