webpart部署到服务器上后显示不了AD信息解决办法
webpart部署到服务器上后显示不了AD信息
xp系统 集成windows验证+匿名验证
需要在webpart程序里读取AD信息,如根据域用户名获取用户邮箱、中文姓名等,
如果以管理员身份(域帐户)从服务器本机直接访问web网站,webpart一切正常,AD信息也能读到;
但如果从其他客户端(包括域帐户和管理员身份)访问服务器的web网站,则不能读取到AD中的信息, 禁用匿名验证也没用,
这是什么原因呢
------解决方案--------------------
看你的情况,首先想到可能是权限的问题
1. 当不能读取 AD 的时候,有跑出异常吗?你用 try catch 能捕捉到异常吗?如果能,这个异常信息时什么?是 SecurityPermission 相关还是 AccessDenied?
2. 你用模拟了吗?web.config 中 <system.web>/<identity impersonate=true />
你能确定执行这段代码的时候安全上下文是用哪个账号吗?当前登录用户还是iis asp。net缺省账号还是 app。net 进程池账号?确保这个账号有读取 AD 的权限,一般这个账号需要是 全局域账号才能访问域信息哦
3. 不管如何,找到 asp.net 进程池账号,将他赋予 AD 读取权限,并用以下代码试试
using(System.Web.Hosting.HostingEnvironment.Impersonate()) { // 模拟 asp.net 进程池账号
// 你的 AD 读取代码
}
------解决方案--------------------
加上SPSecurity.RunWithElevatedPrivileges(delegate(){yourmethod})试试
------解决方案--------------------
哦 仅仅是web part看不到AD信息吗? 你用管理员帐号登录,在用户和组里面可以看到AD用户信息吗? 如果可以,那么说明你的web part有问题,你引入了microsoft.sharepoint.dll吗?
xp系统 集成windows验证+匿名验证
需要在webpart程序里读取AD信息,如根据域用户名获取用户邮箱、中文姓名等,
如果以管理员身份(域帐户)从服务器本机直接访问web网站,webpart一切正常,AD信息也能读到;
但如果从其他客户端(包括域帐户和管理员身份)访问服务器的web网站,则不能读取到AD中的信息, 禁用匿名验证也没用,
这是什么原因呢
------解决方案--------------------
看你的情况,首先想到可能是权限的问题
1. 当不能读取 AD 的时候,有跑出异常吗?你用 try catch 能捕捉到异常吗?如果能,这个异常信息时什么?是 SecurityPermission 相关还是 AccessDenied?
2. 你用模拟了吗?web.config 中 <system.web>/<identity impersonate=true />
你能确定执行这段代码的时候安全上下文是用哪个账号吗?当前登录用户还是iis asp。net缺省账号还是 app。net 进程池账号?确保这个账号有读取 AD 的权限,一般这个账号需要是 全局域账号才能访问域信息哦
3. 不管如何,找到 asp.net 进程池账号,将他赋予 AD 读取权限,并用以下代码试试
using(System.Web.Hosting.HostingEnvironment.Impersonate()) { // 模拟 asp.net 进程池账号
// 你的 AD 读取代码
}
------解决方案--------------------
加上SPSecurity.RunWithElevatedPrivileges(delegate(){yourmethod})试试
------解决方案--------------------
哦 仅仅是web part看不到AD信息吗? 你用管理员帐号登录,在用户和组里面可以看到AD用户信息吗? 如果可以,那么说明你的web part有问题,你引入了microsoft.sharepoint.dll吗?