WSS3SDK之:如何在SharePoint站点中创建Web应用程序
此编程任务,介绍了如何在Visual Studio 2005中创建运行于Windows SharePoint Services下的定制的Web应用程序或网站 。该示例创建一个工具,能够以报告的形式列出了所有指定用户可以访问的SharePoint站点,和该用户在各个网站中所属的分组信息。
注意:
“ Web应用程序”根据上下文的不同会有不同的含义。本节中是指基于浏览器运行的一个aspx页。与Internet Information Server (IIS) “网站”或“应用程序池”无关 。因此,也不是代表Windows SharePoint Services 3.0对象模型里的SPWebApplication 类。
有关如何创建一个与Windows SharePoint Services 并存的Web应用程序,请参阅章节“如何修改配置使应用程序可以与与Windows SharePoint Services并存” 。
步骤
创建一个报告用户所属SharePoint网站和分组的工具
1、在Visual Studio 2005中 ,创建一个新的Web应用程序和并添加对Microsoft.SharePoint.dll的引用。
2、在设计视图中,从工具箱拖入一个标签,一个文本框,一个按钮到 default.aspx页面上 。可以通过单击视图菜单中的工具箱来打开工具箱。
注意:
如果将要创建Web应用程序存在修改内容数据库的操作,那么您还需要在aspx页面源代码中的Form标记内添加一个FormDigest控件。
3、双击刚刚添加的按钮,打开后台代码文件,这里是default.aspx.cs。
4、在文件的开头,引用如下命名空间:
VB
注意:
“ Web应用程序”根据上下文的不同会有不同的含义。本节中是指基于浏览器运行的一个aspx页。与Internet Information Server (IIS) “网站”或“应用程序池”无关 。因此,也不是代表Windows SharePoint Services 3.0对象模型里的SPWebApplication 类。
有关如何创建一个与Windows SharePoint Services 并存的Web应用程序,请参阅章节“如何修改配置使应用程序可以与与Windows SharePoint Services并存” 。
步骤
创建一个报告用户所属SharePoint网站和分组的工具
1、在Visual Studio 2005中 ,创建一个新的Web应用程序和并添加对Microsoft.SharePoint.dll的引用。
2、在设计视图中,从工具箱拖入一个标签,一个文本框,一个按钮到 default.aspx页面上 。可以通过单击视图菜单中的工具箱来打开工具箱。
注意:
如果将要创建Web应用程序存在修改内容数据库的操作,那么您还需要在aspx页面源代码中的Form标记内添加一个FormDigest控件。
3、双击刚刚添加的按钮,打开后台代码文件,这里是default.aspx.cs。
4、在文件的开头,引用如下命名空间:
VB
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Utilities
C#Imports Microsoft.SharePoint.Utilities
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Utilities;
通过引用Microsoft.SharePoint命名空间,能够返回指定的用户和用户所属的组。而通过引用Microsoft.SharePoint.Utilities命名空间,能够将字符串编码显示。
5、然后,我们通过SPSite mySite= SPContext.Current.Site 来实例化站点对象。 (在Visual Basic中为 Dim mySite As SPSite = SPControl.Context.Current.Site)
现在,我们可以使用SPSite的AllWebs属性,以及SPWeb对象的AllUsers属性,和foreach循环中使用SPUser的Groups属性,来返回由文本框中的用户名所对应的用户对象,以及其所属分组的信息。
在default.aspx.cs的默认类中 ,添加以下方法来返回当前网站集下各网站的用户和分组情况:
5、然后,我们通过SPSite mySite= SPContext.Current.Site 来实例化站点对象。 (在Visual Basic中为 Dim mySite As SPSite = SPControl.Context.Current.Site)
现在,我们可以使用SPSite的AllWebs属性,以及SPWeb对象的AllUsers属性,和foreach循环中使用SPUser的Groups属性,来返回由文本框中的用户名所对应的用户对象,以及其所属分组的信息。
在default.aspx.cs的默认类中 ,添加以下方法来返回当前网站集下各网站的用户和分组情况:
VB
Protected Sub GetSitesAndGroups()
Dim userList As String = SPEncode.HtmlEncode(TextBox1.Text) +
" is a user in the following webs:<BR>"
Dim mySite As SPSite = SPContext.Current.Site
Dim allWebs As SPWebCollection = mySite.AllWebs
Dim subWeb As SPWeb
For Each subWeb In allWebs
Dim listGroups As String = ""
'Use AllUsers not Users to ensure you find the user
Dim allUsers As SPUserCollection = subWeb.AllUsers
Dim user As SPUser
For Each user In allUsers
If user.LoginName.ToUpper() = TextBox1.Text.ToUpper()
Then
Dim allGroups As SPGroupCollection = user.Groups
Dim group As SPGroup
For Each group In allGroups
listGroups += SPEncode.HtmlEncode(group.Name) +
" "
Next group
userList += subWeb.ServerRelativeUrl.ToString() +
" -- " + listGroups + "<BR>"
End If
Next user
Next subWeb
Label1.Text = userList
End Sub 'GetSitesAndGroups
Dim userList As String = SPEncode.HtmlEncode(TextBox1.Text) +
" is a user in the following webs:<BR>"
Dim mySite As SPSite = SPContext.Current.Site
Dim allWebs As SPWebCollection = mySite.AllWebs
Dim subWeb As SPWeb
For Each subWeb In allWebs
Dim listGroups As String = ""
'Use AllUsers not Users to ensure you find the user
Dim allUsers As SPUserCollection = subWeb.AllUsers
Dim user As SPUser
For Each user In allUsers
If user.LoginName.ToUpper() = TextBox1.Text.ToUpper()
Then
Dim allGroups As SPGroupCollection = user.Groups
Dim group As SPGroup
For Each group In allGroups
listGroups += SPEncode.HtmlEncode(group.Name) +
" "
Next group
userList += subWeb.ServerRelativeUrl.ToString() +
" -- " + listGroups + "<BR>"
End If
Next user
Next subWeb
Label1.Text = userList
End Sub 'GetSitesAndGroups
C#
protected void GetSitesAndGroups()
{
string userList = SPEncode.HtmlEncode(TextBox1.Text) +
" is a user in the following webs:<BR>";
SPSite mySite = SPContext.Current.Site;
SPWebCollection allWebs = mySite.AllWebs;
foreach (SPWeb subWeb in allWebs)
{
string listGroups = "";
/*Use AllUsers not Users to ensure you find the user*/
SPUserCollection allUsers = subWeb.AllUsers;
foreach (SPUser user in allUsers)
{
if (user.LoginName.ToUpper() == TextBox1.Text.ToUpper())
{
SPGroupCollection allGroups = user.Groups;
foreach (SPGroup group in allGroups)
{
listGroups += SPEncode.HtmlEncode(group.Name) + " ";
}
userList += subWeb.ServerRelativeUrl.ToString() +
" -- " + listGroups + "<BR>";
}
}
}
Label1.Text = userList;
}
{
string userList = SPEncode.HtmlEncode(TextBox1.Text) +
" is a user in the following webs:<BR>";
SPSite mySite = SPContext.Current.Site;
SPWebCollection allWebs = mySite.AllWebs;
foreach (SPWeb subWeb in allWebs)
{
string listGroups = "";
/*Use AllUsers not Users to ensure you find the user*/
SPUserCollection allUsers = subWeb.AllUsers;
foreach (SPUser user in allUsers)
{
if (user.LoginName.ToUpper() == TextBox1.Text.ToUpper())
{
SPGroupCollection allGroups = user.Groups;
foreach (SPGroup group in allGroups)
{
listGroups += SPEncode.HtmlEncode(group.Name) + " ";
}
userList += subWeb.ServerRelativeUrl.ToString() +
" -- " + listGroups + "<BR>";
}
}
}
Label1.Text = userList;
}
上面的样例代码将通过在当前网站集中遍历所有网站中的所有用户,来查找指定用户的LoginName与文本框中所输入的用户名相匹配的项,然后将该网站下该用户所属的分组信息收集并显示出来。
6、为了避免在运行上面代码时收到拒绝访问的错误信息,运行GetSitesAndGroups方法的用户必须拥有完全控制权限。可以通过在Button1_Click事件处理程序中使用RunWithElevatedPrivileges方法,来保证当前用户可以访问到网站集下所有网站的用户和分组信息。
VB
C#
6、为了避免在运行上面代码时收到拒绝访问的错误信息,运行GetSitesAndGroups方法的用户必须拥有完全控制权限。可以通过在Button1_Click事件处理程序中使用RunWithElevatedPrivileges方法,来保证当前用户可以访问到网站集下所有网站的用户和分组信息。
VB
Protected Sub Button1_Click(sender As Object, e As EventArgs)
Dim elevatedGetSitesAndGroups As New SPSecurity.CodeToRunElevated(GetSitesAndGroups)
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups)
End Sub 'Button1_Click
Dim elevatedGetSitesAndGroups As New SPSecurity.CodeToRunElevated(GetSitesAndGroups)
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups)
End Sub 'Button1_Click
C#
protected void Button1_Click(object sender, EventArgs e)
{
SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}
{
SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}
7、在Build菜单上,单击生成解决方案。
将浏览器中打开该网页。当我们输入网站集中一个用户的的登录名称后,标签将显示的指定用户所属的网站和分组。
8、如果要在Visual Studio 2005以外,访问我们刚刚创建的页面,可以通过如下地址http://Server_Name/[sites/][Site_Name/]_layouts/Web_Application_Name/Default.aspx 。
将浏览器中打开该网页。当我们输入网站集中一个用户的的登录名称后,标签将显示的指定用户所属的网站和分组。
8、如果要在Visual Studio 2005以外,访问我们刚刚创建的页面,可以通过如下地址http://Server_Name/[sites/][Site_Name/]_layouts/Web_Application_Name/Default.aspx 。
分类:
SharePoint
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!