重要本文向您顯示如何幫助在計算機上降低安全設定或關閉安全功能的資訊。您可以通過這些更改來解決特定的問題。在進行這些更改之前,我們建議您對在您的特定環境中實施此替代方法可能引起的相關聯的風險進行評估。如果實施該替代方法,請采取任何适當的附加步驟來幫助保護您的系統。
您可能需要從 Web 頁中調用一個 Windows 使用者控件。若要調用一個 Windows 控件,使用者控件的可通路受保護的資源和作為具有強名稱程式集生成時的您必須标記 AllowPartiallyTrusted 程式集屬性與 Windows 使用者控件的程式集。您還必須包括在調用 Assert 方法來允許 Windows 使用者控件通路 受保護的資源。
本分步指南介紹了如何從 Web 頁調用的 Windows 使用者控件。本文介紹 Windows 使用者控件才生成具有強名稱的程式集。這篇文章中的示例介紹如何使用AllowPartiallyTrustedCallers屬性的程式集,以便可以從 Web 頁通路具有強名稱的程式集。文章中的示例還介紹了如何使用Assert方法。
具有強名稱的密鑰對用于使用者控件具有強名稱的程式集進行簽名。當您建立的代碼組授予權限以使用從部分受信任的代碼的程式集使用強名稱。
打開 Visual Studio 的指令提示符。
在 Microsoft Visual Studio.NET 2002 中,單擊開始,指向程式、 指向Microsoft Visual Studio.NET、 指向Visual Studio.NET 工具,然後單擊Visual Studio.NET 指令提示符。Visual Studio.NET 指令提示視窗中會出現。
在 Microsoft Visual Studio.NET 2003年中單擊開始,指向程式、 指向Microsoft Visual Studio.NET 2003年、 指向Visual Studio.NET 工具,然後單擊Visual Studio.NET 2003年指令提示符。Visual Studio.NET 2003年指令提示符視窗将出現。
在 Visual Studio 2005 中,單擊開始,指向程式、 指向Microsoft Visual Studio 2005年、 指向Visual Studio 2005年的工具,然後單擊Visual Studio 2005年指令提示符。Visual Studio 2005年指令提示視窗中會出現。
在 Visual Studio 2008 中,單擊開始,指向程式、 指向Microsoft Visual Studio 2008 的、 指向Visual Studio 2008 的工具,然後單擊Visual Studio 2008 的指令提示符。Visual Studio 2008Command 提示視窗出現。
在指令提示符下鍵入以下指令,然後按 enter 鍵:
sn-k c:\snKey.snk
警告此替代方法可能會使您的計算機或網絡更易于受到惡意使用者或惡意軟體 (如病毒) 的攻擊。我們不建議采用這種解決方法,但我們會提供此資訊,以便您可以自己決定是否實施此替代方法。使用此方法需要您自擔風險。
此使用者控件示範如何使用AllowPartiallyTrustedCallers屬性的程式集。除非該程式集使用的AllowPartiallyTrustedCallers屬性,則僅可以由完全受信任的調用方調用具有強名稱的程式集。該使用者控件的示例還示範如何使用Assert方法。Assert方法聲明則調用代碼可以使用調用Assert方法來通路受權限請求的資源的代碼。代碼可以通路的資源,即使堆棧中較高位置的調用方不具有被授予通路資源的權限。
此使用者控件,您可以通過使用打開對話框中選擇一個檔案。該控件然後在清單框中打開文本檔案。此使用者控件的使用者界面包括一個文本框和一個清單框。文本框中顯示選中,則該檔案的名稱,清單框中顯示所選檔案的内容。
若要從OpenFileDialog框中,讀取所選檔案的名稱并讀取該檔案,則必須授予限制權限類型。該使用者控件必須通過其代碼組授予此權限。調用該控件的網頁不具有此權限。
若要執行堆棧稽核,因為調用方不具有所需的限制權限類型不成功,請使用Assert方法。請注意,是否不正确的或不恰當地使用Assert方法Assert方法可以打開安全漏洞。是以,您必須非常小心地使用Assert方法。反斷言方法必須遵循Assert方法,隻要在檔案操作完成。
注意若要確定該檔案的内容正确顯示在清單框中,使用此使用者控件選擇僅文本檔案。
啟動 Microsoft Visual Studio.NET、 Microsoft Visual Studio 2005 年或更高版本的 Visual Studio。
在檔案菜單上,指向建立,然後單擊項目。此時将顯示建立項目對話框。
在項目類型下單擊Visual C# 項目
注意在 Visual Studio 中,單擊C#下的項目類型
在模闆下單擊Windows 控件庫
在名稱框中,鍵入使用者控件
單擊确定
在解決方案資料總管視窗中,用滑鼠右鍵單擊UserControl1.cs,然後單擊檢視代碼。此時将顯示 UserControl1.cs 檔案。
用下面的代碼替換現有代碼:
在解決方案資料總管中,用滑鼠右鍵單擊AssemblyInfo.cs,然後單擊檢視代碼。此時将顯示 AssemblyInfo.cs 檔案。
找到下面的代碼:
此代碼替換為以下代碼:
單擊生成菜單中的生成解決方案
代碼組确定程式集是否符合管理者定義的标準,被稱為成員條件。如果該程式集比對,該代碼組授予該程式集已與該代碼組關聯的一組權限。
若要建立一個代碼組:
單擊開始,指向設定,然後單擊控制台。此時将顯示控制台視窗。
輕按兩下管理工具。此時将顯示管理工具視窗。
在 Microsoft Visual Studio.NET 2002 中,輕按兩下Microsoft.NET Framework 配置。此時将顯示.NET Framework 配置視窗。
對于 Microsoft Visual Studio.NET 2003 中,輕按兩下Microsoft.NET Framework 1.1 配置。.NET 配置 1.1視窗将出現。
在 Microsoft Visual Studio 2005年或更高版本中,輕按兩下Microsoft.NET Framework 2.0 配置。此時将顯示.NET Framework 2.0 配置視窗。
在左窗格中,展開運作時安全政策,展開計算機,然後展開代碼組
用滑鼠右鍵單擊all_code,然後單擊建立。此時将顯示建立代碼組向導。
請確定選擇建立新的代碼組,在名稱框中,鍵入MyUserControlCodeGroup ,然後單擊下一步。此時将顯示選擇條件類型頁。
在選擇此代碼組的條件類型清單中,單擊強名稱
單擊導入。此時将顯示導入強名稱從集對話框。
查找在"使用 Microsoft Visual C#.NET、 Microsoft Visual C# 2005 年或更高版本中建立一個 Windows 使用者控件"部分中,您建立的 UserControl.dll 檔案,然後單擊打開
單擊下一步。顯示配置設定給代碼組的權限設定頁面。
單擊使用現有權限集,從清單中選擇fulltrust 權限,然後單擊下一步。此時将顯示完成向導頁。
單擊完成以關閉建立代碼組向導。
建立一個代碼組來指定程式集的權限後,您必須建立一個 HTML 檔案,若要從浏覽器中,調用的使用者控件,必須設定環境,以確定該使用者控件調用的成功。
單擊開始,單擊運作,鍵入記事本,然後單擊确定
在記事本中,粘貼以下代碼:
Microsoft Internet Information Services (IIS) 的根檔案夾中中,,将檔案儲存為 CallUserControl.htm。
将複制到 IIS 根檔案夾"使用 Microsoft Visual C#.NET、 Microsoft Visual C# 2005 年或更高版本中建立一個 Windows 使用者控件"一節中建立的 UserControl.dll 檔案。
打開 Microsoft Internet Explorer。
在位址框中,鍵入http://localhost/CallUserControl.htm,然後再按 ENTER。此時将顯示打開對話框。
查找任何文本的檔案,然後單擊打開。檔案的文本将顯示在浏覽器上的清單框控件中。