WSS3SDK之:如何在SharePoint網站中建立Web應用程式

來源:互聯網
上載者:User
此編程任務,介紹了如何在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、在檔案的開頭,引用如下命名空間:
VBImports Microsoft.SharePoint
Imports Microsoft.SharePoint.Utilities

C#using Microsoft.SharePoint;
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的預設類中 ,添加以下方法來返回當前網站集合下各網站的使用者和分組情況:

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

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;
}上面的範例代碼將通過在當前網站集合中遍曆所有網站中的所有使用者,來尋找指定使用者的LoginName與文字框中所輸入的使用者名稱相匹配的項,然後將該網站下該使用者所屬的分組資訊收集並顯示出來。
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

C#

protected void Button1_Click(object sender, EventArgs e)
{
   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 。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.