刚刚接触MOSS,以前连这个名词都没有听过。现在公司开发用到这个,在一个月的接触中发现它真是一门奈人难味的艺术啊。其中的知识是比较零散的(在我这个菜鸟眼里是这样滴,嘻嘻),遇到问题的时候也是让我疯掉的,不过特别享受找到答案的那份喜悦。学习MOSS是我从事开发以来第一次感到程序是很有趣的。所以要继续下去。
好了,废话不多讲了。先记下我今天学到的东西。
1、sharepoint 一个有用的方法SPSecurity.RunWithElevatedPrivileges(delegate(){})
今天开发的过程中用到在MOSS网站上去访问域控上的用户信息,这个我是利用LDAP协议来实现的其中用的了一个DirectoryEntry这个类(这个类是引自system.directoryseverices这个程序集的。)实例化一个DirectoryEntry的对象后调用其中的主法来实现的,(参考:http://msdn.microsoft.com/zh-cn/library/system.directoryservices.directoryentry_members(VS.80).aspx)
实例化事例代码段:
DirectoryEntry bjDE = new DirectoryEntry (“LDAP://hostname");// 当然DirectoryEntry 还有其它的构造函数,我这里只调用了一个参数的构造函数
OK,实例化之后就可以调用其相应方法了,这个参考上面提供的网址。当我把程序入到MOSS网站上的时,会报意外错误,但在我本地开发的机器上没有任何问题包括在虚机上。
经过一阵的的寻觅和请教发现原来是,放到MOSS上之后,当前登陆用户的权限不足进行这个域控的操作。
解决办法:
把这与的这段代码包在
SPSecurity.RunWithElevatedPrivileges(delegate(){}) 中即可。
如:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// 此处显示的是要在提升权限的情况下运行的代码。
// 该代码段在 SHAREPOINT/SYSTEM 帐户下运行。
}) ;
另外还一点值得注意:SPSecurity.RunWithElevatedPrivileges可以提升代码的运行权限,实现模拟管理员身份的功能。
在RunWithElevatedPrivileges中不要使用SPContext.Current.Web,SPContext.Current.Site,SPControl.GetContextWeb(HttpContext.Current)之类的根据当前上下文得到当前的Web或者Site,根据这些方法得到的所有对象(包括从根据这些对象得到的List,ListItem等等对象)都是以当前网站登录用户权限运作的,即使是在RunWithElevatedPrivileges其运作权限也不会是管理员。
所以,如果要真正让在RunWithElevatedPrivileges中的代码以管理员权限正常运作的话,必须重新初始化相应的对象,比如:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite mySite = new SPSite(SPContext.Current.Site.Url))
{
Response.Write(mySite.RootWeb.CurrentUser.LoginName);
}
});以上mySite.RootWeb.CurrentUser.LoginName返回的是管理员的登录帐号。但是如果按之前所说使用SPContext:SPSecurity.RunWithElevatedPrivileges(delegate()
{
Response.Write(SPContext.Current.Web.CurrentUser.LoginName);
});这时候即使在提升权限的范围内运行,得到的也是当前网站登录帐户名,而不是管理员登录帐号。
2、这第二点学到的就是如何调试WEBPART。
我刚刚学会的这一手调试是要在服务器上做开发的,才可以调试,调试方法是将编译生成的DLL文件拷到MOSS工作目录(即80目录下的BIN),将页面也要拷到相应目录下,之后在VS开发环境中“调试”菜单的“附加进程”选中w3wp.exe进程加进来,然后在程序中插入断点之后,在客户端执行页面,便会自动跳入断点以便进行调试。
这里有一点要注意,每次程序有改动都要重新拷贝过去一个dll及相关页面文件噢 ,再重新附加进程才可以的。
今天先写这么多,还有一些我得再想想才好整理的。这些东西都不是原创,但都是遇到问题后找来的资源。首行要感谢这些东东的提供者。收集学习中的点滴,为自己也为需要的朋友提供一点帮助。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14368614/viewspace-351918/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14368614/viewspace-351918/