Как с помощью атрибута AllowPartiallyTrustedCallers вызывать сборки со строгим именем с веб-страницы с помощью Visual C#.NET, Visual C# 2005 и более поздних версий

Переводы статьи Переводы статьи
Код статьи: 839300 - Vizualiza?i produsele pentru care se aplic? acest articol.
Важные Данная статья содержит информацию, которая показывает, как помочь более низкие параметры безопасности или отключение функции безопасности на компьютере. Вы Эти изменения для устранения определенной проблемы. Прежде чем использовать эти изменения, рекомендуется оценить риски, связанные с Реализация этого метода обхода в конкретной среде. При реализации Этот метод обхода, взять все соответствующие дополнительные меры для защиты ваших системы.
Развернуть все | Свернуть все

В этой статье

Аннотация

Необходимо вызвать пользовательский элемент управления Windows на веб-странице. Для вызова пользовательского элемента управления Windows, можно получить доступ к защищенным ресурсам и реализовано в виде сборки строгим именем необходимо пометить сборку пользовательского элемента управления Windows с помощью AllowPartiallyTrusted атрибут сборки. Необходимо также включить вызов Утверждение метод, чтобы разрешить пользовательский элемент управления Windows для доступа к защищенным ресурс.

ВВЕДЕНИЕ

Эта статья содержит пошаговые инструкции для вызова Windows пользовательский элемент управления на веб-странице. Пользователь Windows управлять, в данной статье Описывает строится на сборку со строгим именем. Пример в этом в статье описывается использование AllowPartiallyTrustedCallers атрибут сборки, таким образом, сборки, имеющей строгое Имя может осуществляться из веб-страницы. Пример в статье также описываются Использование Утверждение метод.

Создайте пару ключей со строгим именем

Чтобы подписать сборку для используется пара ключей со строгим именем пользовательский элемент управления со строгим именем. Строгое имя используется при создании группы кода, которая предоставляет разрешение на использование сборки из частично доверенного код.
  1. Откройте командную строку Visual Studio.

    В корпорации Майкрософт 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 появится.
  2. В командной строке следующую команду и нажмите клавишу ВВЕДИТЕ:
    sn -k c:\snKey.snk

Создание пользовательского элемента управления Windows с помощью Microsoft Visual C#.NET, Microsoft Visual C# 2005 или более поздней версии

Предупреждение Этот способ может увеличить ваш компьютер или сеть более уязвим для атак злоумышленников и проникновения потенциально опасных программ, например вирусы. Корпорация Майкрософт не рекомендует использовать этот способ, но Майкрософт Таким образом, этот способ можно применить на свой собственный риск. Используйте это Временное решение на свой страх и риск.

Этот пользовательский элемент управления Демонстрирует использование AllowPartiallyTrustedCallers атрибут сборки. Сборки со строгим именем могут вызываться только полностью доверенный вызывающий объект, если не используется сборка AllowPartiallyTrustedCallers атрибут. Пользовательский элемент управления также демонстрируются как для использования Утверждение метод. В Утверждение метод объявляет, что вызывающий код может использовать код, который вызывает очередь Утверждение метод доступа к ресурсу, защищенному разрешением по требованию. Код может доступа к ресурсу, даже если вызывающие объекты, расположенные выше по стек не имеют разрешения на доступ к ресурсу.

Это пользовательский элемент управления позволяет выбрать файл с помощью диалогового окна Открыть. Элемент управления Открывает текстовый файл в списке. Пользовательский интерфейс пользователя элемент управления содержит одно текстовое поле и одно поле со списком. В текстовом поле отображается имя файл, который выбран и списка поле показано содержимое файла будет выделен.

Прочитать имя выбранного файла из OpenFileDialog поле и на чтение файла, разрешение FileIOPermission Тип разрешения должны быть предоставлены. Пользовательский элемент управления должен иметь это разрешение в соответствии с его группы кода. Веб-страницу, которая вызывает элемент управления не поддерживает Это разрешение.

Чтобы запретить проверку стека, который не был выполнен успешно так как у вызывающего оператора нет требуемого типа разрешение FileIOPermission, Если данный пользователь является членом домена, то при вводе имени пользователя используйте формат Утверждение метод. Обратите внимание, что Утверждение метод можно открыть уязвимостей системы безопасности Утверждение метод используется неправильное или неоправданное. Таким образом вы необходимо использовать Утверждение метод с предельной осторожностью. A RevertAssert необходимо выполнить метод Утверждение метод сразу же после завершения операции файл.

Примечание Чтобы убедиться, что содержимое файла отображаются правильно в список используйте этот пользовательский элемент управления для выбора только текстовые файлы.
  1. Запустите Microsoft Visual Studio.NET, Microsoft Visual Studio 2005 или более поздней версии Visual Studio.
  2. На Файл Выберите пунктНовый, а затем нажмите кнопку Проект. В Новый Проект Появится диалоговое окно.
  3. В группе Типы проектов, нажмите кнопку Visual В проектах C#.

    Примечание В Visual Studio нажмите кнопку Visual C# Из спискаТипы проектов.
  4. В группе Шаблоны, нажмите кнопку Windows Библиотека элементов управления.
  5. В Имя поле типаПользовательских элементов управления.
  6. Нажмите кнопку ОК.
  7. В окне обозревателя решений щелкните правой кнопкой мышиUserControl1.cs, а затем нажмите кнопку Просмотр кода. Откроется файл UserControl1.cs.
  8. Замените существующий код следующим кодом:
    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. В обозревателе решений щелкните правой кнопкой мышиAssemblyInfo.cs, а затем нажмите кнопку Просмотр кода. Откроется файл AssemblyInfo.cs.
  10. Найдите следующий код:
    [assembly: AssemblyVersion("1.0.*")]
    Замените код следующим кодом:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. Найдите следующий код:
    [assembly: AssemblyKeyFile("")]
    Замените код следующим кодом:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. На Построение меню, нажмите кнопку Построение Решение.

Создать группу кода, чтобы назначить разрешения для сборки

Предупреждение Этот способ может увеличить ваш компьютер или сеть более уязвим для атак злоумышленников и проникновения потенциально опасных программ, например вирусы. Корпорация Майкрософт не рекомендует использовать этот способ, но Майкрософт Таким образом, этот способ можно применить на свой собственный риск. Используйте это Временное решение на свой страх и риск.

Определяет группу кода совпадает ли критериев, определенных администратором, на которые ссылаются на сборки как условие членства. Если сборка отвечает условию, группа кода предоставляет набор разрешений, связанный с этим кодом сборки Группа.

Чтобы создать группу кода:
  1. Нажмите кнопку Начало, выберите пунктПараметры, а затем нажмите кнопку Панель управления. ВПанель управления Появится окно.
  2. Дважды щелкните значок Администрирование. ВАдминистрирование Появится окно.
  3. В Microsoft Visual Studio.NET 2002, дважды щелкните значокКорпорация Майкрософт.NET Framework конфигурации. В .NET Framework конфигурации Появится окно.

    Для Microsoft Visual Studio.NET 2003, дважды щелкните значок Корпорация Майкрософт.NET Framework 1.1 Конфигурация. В .NET конфигурации 1.1 Windows появится.

    В Microsoft Visual Studio 2005 или более поздней версии дважды щелкните значокКорпорация Майкрософт.NET Framework 2.0 конфигурация. В .NET Конфигурация Framework 2.0 Появится окно.
  4. В левой области разверните узел Система безопасности среды выполнения Политика, разверните узел Машина, а затем разверните узел Код Группы.
  5. Щелкните правой кнопкой мыши All_Code, а затем нажмите кнопкуНовый. Откроется окно мастера создания группы кода.
  6. Убедитесь, что Создать новую группу кода является флажок установлен, введите MyUserControlCodeGroup В диалоговом окнеИмя поле, а затем нажмите кнопку Далее. ВВыберите тип условия Появится страница.
  7. В Выберите тип условия для этого кода все права Выберите Строгое имя.
  8. Нажмите кнопку Импорт. В Импорт строгого Имя из сборки Появится диалоговое окно.
  9. Найдите файл UserControl.dll, созданный в «Создание пользовательского элемента управления Windows с помощью Microsoft Visual C#.NET, Microsoft Visual C# 2005 или более поздней версии"раздел, а затем нажмите Открыть.
  10. Нажмите кнопку Далее. В Назначение Набор разрешений для группы кода Появится страница.
  11. Нажмите кнопку Использовать существующий набор разрешений, выберитеFullTrust из списка и нажмите кнопку Далее. В Завершение работы мастера Появится страница.
  12. Нажмите кнопку Окончание Чтобы закрыть код создания Мастер групп.

Создать файл HTML для вызова пользовательского элемента управления

После создания группы кода, чтобы назначить разрешения для сборки, необходимо создать файл HTML для вызова из пользовательского элемента управления обозреватель и необходимо настроить среду убедитесь, что пользовательский элемент управления вызывается успешно.
  1. Нажмите кнопку Начало, нажмите кнопку Запустить, TYPE «Блокнот», а затем нажмите кнопкуОК.
  2. В программе «Блокнот» вставьте следующий код:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>
        
    </OBJECT> 
  3. В корневой папке Microsoft Internet Information Службы IIS, сохраните файл с именем CallUserControl.htm.
  4. Скопируйте файл UserControl.dll, созданный в «Создание пользовательского элемента управления Windows с помощью Microsoft Visual C#.NET, Microsoft Visual C# 2005 или более поздней версии"раздел в корневом каталоге IIS папка.
  5. Откройте обозреватель Microsoft Internet Explorer.
  6. В Адрес поле типаhttp://localhost/CallUserControl.htm, а затем нажмите клавишу ВВОД. В Открыть Появится диалоговое окно.
  7. Найдите любой текстовый файл и нажмите кнопку Открыть. Текстовый файл появится в ListBox управлять веб-обозревателе.

Ссылки

Для получения дополнительных сведений посетите следующие корпорации Майкрософт Developer Network (MSDN) веб-узлов:
Настройка групп кода с помощью.NET Framework Configuration tool
http://msdn2.Microsoft.com/en-us/library/eb8xw74a (vs.71) .aspx

Метод CodeAccessPermission.Assert
http://msdn2.Microsoft.com/en-us/library/System.Security.CodeAccessPermission.Assert (vs.71) .aspx

.NET Framework, а также атрибута AllowPartiallyTrustedCallers
http://msdn2.Microsoft.com/en-us/library/aa302328.aspx

Класс AllowPartiallyTrustedCallersAttribute
http://msdn2.Microsoft.com/en-us/library/System.Security.AllowPartiallyTrustedCallersAttribute (vs.71) .aspx

Вопросы безопасности сборок
http://msdn2.Microsoft.com/en-us/library/ab4eace3 (vs.71) .aspx

Заметки о безопасности: строгие имена и безопасность.NET Framework
http://msdn2.Microsoft.com/en-us/library/aa302416.aspx

Свойства

Код статьи: 839300 - Последний отзыв: 16 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • 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
Ключевые слова: 
kbhowtomaster kbhowto kblistbox kbfileio kbdll kbcontrol kbweb kbuser kbsecurity kbpolicy kbopenfile kbmt KB839300 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:839300

Отправить отзыв

 

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