Wie Sie das AllowPartiallyTrustedCallers-Attribut, um eine Assembly aufrufen, die einen starken Namen aus einer Webseite mithilfe von Visual c#, Visual c# 2005 oder höher hat

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 839300 - Produkte anzeigen, auf die sich dieser Artikel bezieht
wichtig Dieser Artikel enthält Informationen, die Sie zu Sicherheitseinstellungen herab oder zum Deaktivieren von Sicherheitsfunktionen auf einem Computer anzeigt. Sie können diese Änderungen einem bestimmten Problem zu umgehen vornehmen. Bevor Sie diese Änderungen vornehmen, empfiehlt Microsoft, zunächst die Risiken, die abzuschätzen mit dieser Problemumgehung in Ihrer speziellen Umgebung verbunden sind. Wenn Sie diese Problemumgehung implementieren, sollten Maßnahmen Sie entsprechende treffen, um Ihr System zu schützen.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

kann ein Windows-Benutzer-Steuerelement von einer Webseite aufgerufen werden soll. Um ein Windows-Benutzer-Steuerelement, kann auf sichere Ressourcen zugreifen und als eine Assembly, die einen starken Namen verfügt baut, aufrufen, müssen Sie die Assembly des Benutzersteuerelements Windows mit dem AllowPartiallyTrusted Assembly-Attribut kennzeichnen. Sie müssen auch einen Aufruf der Methode Assert damit das Windows-Benutzer-Steuerelement auf die geschützte Ressource. einschließen

EINFÜHRUNG

Schritt für Schritt beschrieben, wie aufrufen, ein Windows-Benutzersteuerelement aus einer Webseite. Das Windows-Benutzer-Steuerelement, das in diesem Artikel beschrieben wird als eine Assembly erstellt, die einen starken Namen aufweist. Das Beispiel in diesem Artikel beschreibt, wie das AllowPartiallyTrustedCallers -Attribut der Assembly verwenden, so dass eine Assembly, die einen starken Namen verfügt über eine Webseite zugegriffen werden kann. Das Beispiel in der Artikel wird auch die mithilfe der Assert -Methode beschrieben.

Erstellen Sie ein Schlüsselpaar, das einen starken Namen hat

Ein Schlüsselpaar mit den starken Namen wird zum Signieren einer Assembly für ein Benutzersteuerelement, das einen starken Namen verfügt. Der starke Name wird verwendet, wenn Sie eine Codegruppe erstellen, die Berechtigung zum verwenden die Assembly von teilweise vertrauenswürdigem Code gewährt.
  1. Öffnen Sie eine Visual Studio-Eingabeaufforderung.

    Klicken Sie in Microsoft Visual Studio .NET 2002 auf Start , zeigen Sie auf Programme , zeigen Sie auf Microsoft Visual Studio .NET , zeigen Sie auf Visual Studio .NET Tools und klicken Sie dann auf Visual Studio .NET-Eingabeaufforderung . Der Visual Studio .NET Eingabeaufforderungsfenster wird.

    Klicken Sie in Microsoft Visual Studio .NET 2003 auf Start , zeigen Sie auf Programme , zeigen Sie auf Microsoft Visual Studio .NET 2003 , zeigen Sie auf Visual Studio .NET Tools und klicken Sie dann auf 2003-Eingabeaufforderung . Das Fenster Visual Studio .NET 2003-Eingabeaufforderung wird angezeigt.

    Klicken Sie in Visual Studio 2005 auf Start , zeigen Sie auf Programme , zeigen Sie auf Microsoft Visual Studio 2005 , zeigen Sie auf Visual Studio 2005-Tools und klicken Sie dann auf Visual Studio 2005-Eingabeaufforderung . Das Fenster Visual Studio 2005-Eingabeaufforderung wird angezeigt.

    Klicken Sie in Visual Studio 2008 auf Start , zeigen Sie auf Programme , zeigen Sie auf Microsoft Visual Studio 2008 , zeigen Sie auf Visual Studio 2008-Tools und klicken Sie dann auf Visual Studio 2008-Eingabeaufforderung . Das Fenster Visual Studio 2008Command Eingabeaufforderung wird angezeigt.
  2. Geben Sie an der Eingabeaufforderung die folgenden, und drücken Sie anschließend die [EINGABETASTE]:
    sn-k c:\snKey.snk

Erstellen Sie ein Windows-Benutzersteuerelement mithilfe Microsoft Visual c#, Microsoft Visual c# 2005 oder höher

Warnung Diese Problemumgehung kann Ihren Computer oder Ihr Netzwerk möglicherweise anfälliger, Angriffe durch böswillige Benutzer oder gefährlicher Software wie Viren vornehmen. Zwar wir empfehlen diese Problemumgehung nicht jedoch diese Informationen, damit Sie diese Problemumgehung eigenem Ermessen implementieren können. Verwenden Sie diese Problemumgehung auf eigene Gefahr.

Dieses Benutzersteuerelement veranschaulicht, wie das AllowPartiallyTrustedCallers -Attribut einer Assembly verwenden. Eine Assembly, die einen starken Namen verfügt kann nur von einem voll vertrauenswürdigen Aufrufer aufgerufen werden, sofern die Assembly das AllowPartiallyTrustedCallers -Attribut verwendet. Im Beispiel für das Benutzersteuerelement veranschaulicht auch, wie mit die Assert -Methode. Die Assert -Methode deklariert, dass der aufrufende Code im Code, der die Assert -Methode verwenden kann auf die Ressource zuzugreifen, die durch eine Berechtigungsanforderung geschützte aufruft. Der Code kann die Ressource zugreifen, selbst wenn Aufrufer, die im Stapel höher Zugriffsberechtigung für die Ressource nicht erteilt wurden.

Dieses Benutzersteuerelement können Sie eine Datei auswählen, indem Sie das Dialogfeld öffnen. Das Steuerelement öffnet dann die Textdatei im Listenfeld. Die Benutzeroberfläche dieses Benutzersteuerelement enthält ein Textfeld und einem Listenfeld. Das Textfeld zeigt den Namen der Datei, die ausgewählt ist und das Listenfeld zeigt den Inhalt der Datei, die ausgewählt ist.

Der Name der ausgewählten Datei aus dem Feld OpenFileDialog gelesen und Lesen der Datei, die Berechtigung FileIOPermission Berechtigungstyp erteilt werden muss. Das Benutzersteuerelement benötigen diese über die Codegruppe erteilt Berechtigung. Die Webseite, die das Steuerelement ruft dieses Zugriffsrecht nicht.

Verwenden Sie die Assert -Methode, um einen Stackwalk zu verhindern, der nicht erfolgreich ist, da der Aufrufer nicht die erforderlichen FileIOPermission Berechtigungstyp verfügt. Beachten Sie, dass die Assert -Methode Sicherheitslücken öffnen kann, wenn die Assert -Methode falsch oder nicht ordnungsgemäß verwendet wird. Daher müssen Sie die Assert -Methode mit äußerst vorsichtig verwenden. Eine Methode RevertAssert muss die Assert -Methode folgen, sobald der Vorgang abgeschlossen ist.

Hinweis: Um sicherzustellen, dass der Inhalt der Datei korrekt im Listenfeld angezeigt werden, verwenden Sie dieses Benutzersteuerelement, um nur Textdateien auszuwählen.
  1. Starten Sie Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 oder einer späteren Version von Visual Studio.
  2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt . Das Dialogfeld Neues Projekt angezeigt wird.
  3. Klicken Sie unter Projekttypen auf Visual C#-Projekte .

    Hinweis: Klicken Sie in Visual Studio auf Visual c# unter Projekttypen .
  4. Klicken Sie unter Vorlagen auf Windows-Steuerelementbibliothek .
  5. Geben Sie im Feld Name UserControl .
  6. Klicken Sie auf OK .
  7. Klicken Sie im Projektmappen-Explorer klicken Sie mit der rechten Maustaste auf UserControl1.cs und klicken Sie dann auf Code anzeigen . Die Datei UserControl1.cs wird angezeigt.
  8. Ersetzen Sie den vorhandenen Code durch folgenden Code:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
    using System.IO;
    using System.Security;
    using System.Security.Permissions;
    using System.Reflection;
    using System.Runtime.CompilerServices;
    
    [assembly:AllowPartiallyTrustedCallers]
    
    namespace UserControl
    {
    	/// <summary>
    	/// Summary description for UserControl1.
    	/// </summary>
    	public class UserControl1 : System.Windows.Forms.UserControl
    	{
    		private System.Windows.Forms.TextBox textBox1;
    		private System.Windows.Forms.ListBox listBox1;
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		private System.ComponentModel.Container components = null;
    
    		public UserControl1()
    		{
    			// This call is required by the Windows.Forms Form Designer.
    			InitializeComponent();
    
    			// TODO: Add any initialization after the InitForm call.
    			OpenFileDialog fileDialog = new OpenFileDialog();
    			if(fileDialog.ShowDialog() == DialogResult.OK)
    			{
    				// Reading the name of the selected file from the OpenFileDialog box
    				// and reading the file requires FileIOPermission.   
    				// The Assert command must be followed by a RevertAssert as soon as the file operation 
    				// is completed.
    				new FileIOPermission(PermissionState.Unrestricted).Assert();
    				textBox1.Text = fileDialog.FileName;
    				// Display the contents of the file in the text box.
    				FileStream fsIn = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, 
    					FileShare.Read);
    				StreamReader sr = new StreamReader(fsIn);
    			
    				// Process every line in the file.
    				for (String Line = sr.ReadLine(); Line != null; Line = sr.ReadLine()) 
    				{
    					listBox1.Items.Add(Line);
    				}
    				// It is very important to call RevertAssert to restore the stack walk for
    				// file operations.
    				FileIOPermission.RevertAssert();
    			}
    
    		}
    
    		/// <summary>
    		/// Clean up any resources that are being used.
    		/// </summary>
    		protected override void Dispose( bool disposing )
    		{
    			if( disposing )
    			{
    				if( components != null )
    					components.Dispose();
    			}
    			base.Dispose( disposing );
    		}
    
    		#region Component Designer generated code
    		/// <summary>
    		/// Required method for Designer support. Do not modify 
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{
    			this.textBox1 = new System.Windows.Forms.TextBox();
    			this.listBox1 = new System.Windows.Forms.ListBox();
    			this.SuspendLayout();
    			// 
    			// textBox1
    			// 
    			this.textBox1.Location = new System.Drawing.Point(32, 16);
    			this.textBox1.Name = "textBox1";
    			this.textBox1.TabIndex = 0;
    			this.textBox1.Text = "textBox1";
    			// 
    			// listBox1
    			// 
    			this.listBox1.Location = new System.Drawing.Point(144, 16);
    			this.listBox1.Name = "listBox1";
    			this.listBox1.Size = new System.Drawing.Size(120, 95);
    			this.listBox1.TabIndex = 1;
    			// 
    			// UserControl1
    			// 
    			this.Controls.Add(this.listBox1);
    			this.Controls.Add(this.textBox1);
    			this.Name = "UserControl1";
    			this.Size = new System.Drawing.Size(376, 120);
    			this.ResumeLayout(false);
    
    		}
    		#endregion
    			}
    }
    
  9. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf AssemblyInfo.cs und klicken Sie dann auf Code anzeigen . Die Datei AssemblyInfo.cs wird angezeigt.
  10. Suchen Sie folgenden Code:
    [assembly: AssemblyVersion("1.0.*")]
    dieser Code mit dem folgenden Code ersetzen:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. Suchen Sie folgenden Code:
    [assembly: AssemblyKeyFile("")]
    dieser Code mit dem folgenden Code ersetzen:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .

Erstellen Sie Zuweisen von Berechtigungen für die Assembly eine Codegruppe

Warnung Diese Problemumgehung kann Ihren Computer oder Ihr Netzwerk möglicherweise anfälliger, Angriffe durch böswillige Benutzer oder gefährlicher Software wie Viren vornehmen. Zwar wir empfehlen diese Problemumgehung nicht jedoch diese Informationen, damit Sie diese Problemumgehung eigenem Ermessen implementieren können. Verwenden Sie diese Problemumgehung auf eigene Gefahr.

Eine Codegruppe bestimmt, ob eine Assembly entspricht vom Administrator definierte Kriterien, die als Mitgliedschaftsbedingung bezeichnet wird. Wenn die Assembly übereinstimmt, gewährt die Codegruppe der Assembly eine Reihe von Berechtigungen, die dieser Codegruppe zugeordnet wurde.

So erstellen eine Codegruppe
  1. Klicken Sie auf Start , zeigen Sie auf Einstellungen und klicken Sie auf Systemsteuerung . Das Fenster Systemsteuerung wird angezeigt.
  2. Doppelklicken Sie auf Verwaltung . Das Fenster Verwaltung wird angezeigt.
  3. Doppelklicken Sie in Microsoft Visual Studio .NET 2002 auf Microsoft .NET Framework-Konfiguration . Die .NET Framework-Konfigurationstool Fenster wird angezeigt.

    Microsoft Visual Studio .NET 2003 doppelklicken Sie auf Microsoft .NET Framework 1.1 Configuration . Das Fenster .NET Konfiguration 1.1 wird angezeigt.

    Doppelklicken Sie in Microsoft Visual Studio 2005 oder in späteren Versionen auf Microsoft .NET Framework 2.0-Konfiguration . Die .NET Framework 2.0-Konfiguration Fenster wird angezeigt.
  4. Im linken Bereich erweitern Sie Laufzeitsicherheitsrichtlinie , erweitern Sie Computer , und erweitern Sie Codegruppen .
  5. Klicken Sie mit der rechten Maustaste auf All_Code , und klicken Sie dann auf neu . Der Assistent zum Erstellen der Codegruppe wird angezeigt.
  6. Stellen Sie sicher, dass eine neue Codegruppe erstellen ausgewählt ist, geben Sie MyUserControlCodeGroup im Feld Name ein, und klicken Sie dann auf Weiter . Die Seite einen Bedingungstyp wählen wird angezeigt.
  7. Klicken Sie in der Liste Wählen Sie den Bedingungstyp für die Codegruppe auf Strong Name .
  8. Klicken Sie auf Importieren . Das Dialogfeld Import starken Name aus Assembly angezeigt wird.
  9. Suchen Sie die UserControl.dll-Datei, die Sie im Abschnitt "Erstellen ein Windows-Benutzer-Steuerelement mithilfe von Microsoft Visual c# .NET, Microsoft Visual c# 2005 oder höher" erstellt haben, und klicken Sie dann auf Öffnen .
  10. Klicken Sie auf Weiter . Die Seite zuordnen einen Berechtigungssatz zur Code-Gruppe wird angezeigt.
  11. Klicken Sie auf vorhandenen Berechtigungssatz verwenden , wählen Sie FullTrust aus der Liste aus und klicken Sie dann auf Weiter . Die Seite Fertigstellen des Assistenten wird angezeigt.
  12. Klicken Sie auf Fertig stellen , um den Assistenten Codegruppe erstellen zu schließen.

Erstellen Sie eine HTML-Datei des Benutzersteuerelements aufrufen

Nach dem Erstellen einer Codegruppe Zuweisen von Berechtigungen für die Assembly müssen Sie eine HTML-Datei des Benutzersteuerelements aus den Browser aufrufen erstellen und Sie müssen die Umgebung einrichten, um sicherzustellen, dass das Benutzersteuerelement erfolgreich aufgerufen wird.
  1. Klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie Notepad und klicken Sie dann auf OK .
  2. Fügen Sie in Editor den folgenden Code:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>
        
    </OBJECT> 
  3. Im Stammordner der Microsoft Internet Information Services (IIS), speichern Sie die Datei als CallUserControl.htm.
  4. Kopieren Sie die UserControl.dll-Datei, die Sie im Abschnitt "Erstellen ein Windows-Benutzer-Steuerelement mithilfe von Microsoft Visual c# .NET, Microsoft Visual c# 2005 oder höher", um das IIS-Stammverzeichnis erstellt haben.
  5. Öffnen Sie Microsoft Internet Explorer.
  6. Geben Sie im Feld Adresse http://localhost/CallUserControl.htm , und drücken Sie anschließend die [EINGABETASTE]. Das Dialogfeld Öffnen wird angezeigt.
  7. Suchen Sie eine beliebige Textdatei, und klicken Sie dann auf Öffnen . Der Text der Datei wird im ListBox -Steuerelement im Browser angezeigt.

Informationsquellen

Informationen finden Sie auf den folgenden Websites von Microsoft Developer Network (MSDN):
Konfigurieren von Codegruppen mit .NET Framework-Konfigurationstool
http://msdn2.microsoft.com/en-us/library/eb8xw74a(vs.71).aspx

Methode CodeAccessPermission.Assert
http://msdn2.microsoft.com/en-us/library/system.security.codeaccesspermission.assert(vs.71).aspx

.NET Framework-Assemblys und das AllowPartiallyTrustedCallers-Attribut
http://msdn2.microsoft.com/en-us/library/aa302328.aspx

AllowPartiallyTrustedCallersAttribute-Klasse
http://msdn2.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute(vs.71).aspx

Assembly-Sicherheitsüberlegungen
http://msdn2.microsoft.com/en-us/library/ab4eace3(vs.71).aspx

Sicherheit Briefings: starke Namen und Sicherheit in .NET Framework
http://msdn2.microsoft.com/en-us/library/aa302416.aspx

Eigenschaften

Artikel-ID: 839300 - Geändert am: Dienstag, 15. Juli 2008 - Version: 4.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
Keywords: 
kbmt kbhowtomaster kbhowto kblistbox kbfileio kbdll kbcontrol kbweb kbuser kbsecurity kbpolicy kbopenfile KB839300 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 839300
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com