Опубликован: 24.11.2006 | Доступ: свободный | Студентов: 678 / 23 | Оценка: 4.46 / 4.54 | Длительность: 17:18:00
Лекция 2:

Веб-формы ASP.NET

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

Построение веб-форм

Отображение информации из базы данных в таблице HTML реализуется с помощью элемента управления веб-формы DataGrid. В представлении Design (Дизайн) выберите DataGrid в инструментарии и вставьте этот элемент в веб-форму. При отображении кода HTML вы имеете дело с представлением формы в HTML. На рисунке 2.3 изображена веб-форма в представлении Design (Дизайн).) После добавления в форму элемента DataGrid его можно переименовать в окне свойств. На рисунке 2.5 мы видим, что элементу DataGrid присвоено имя dgChair.

Окно свойств элемента управления DataGrid

Рис. 2.5. Окно свойств элемента управления DataGrid

Запуск веб-формы в Visual Studio .NET на данном этапе вызовет компиляцию веб-формы в библиотеку на сервере разработки. В нашем примере сервер разработки, на котором расположена веб-форма, называется amd1700. Для компиляции веб-формы и запуска ее в режиме отладки в Visual Studio .NET нажмите на клавишу F5. Visual Studio .NET скомпилирует веб-форму и перейдет в режим отладки аналогично тому, как это происходило в предыдущих версиях Visual Studio при запуске исполняемого файла Visual Basic или Visual C++.

После завершения компиляции на рабочей станции откроется браузер с отображением веб-формы. Сервер разработки выполнит действия, необходимые для отображения веб-страницы, и браузер откроет пустую страницу. При закрытии браузера сеанс отладки завершится, и Visual Studio .NET вернется в режим редактирования. В данном упражнении отображается пустая страница, поскольку элемент DataGrid dgChair не содержит никаких данных. Для отображения элементом DataGrid данных нужно создать в файле Codebehind код, реализующий получение элемента DataSet и размещение данных в элементе управления dgChair.

Изменение кода веб-формы, ориентированной на работу с данными

Чтобы изменить файл Codebehind веб-формы с элементом dgChair, щелкните правой кнопкой мыши на файле веб-формы в Solution Explorer или правой кнопкой мыши на самом файле в представлении Design (Дизайн). Затем выберите View Code (Просмотреть код). По умолчанию Visual Studio .NET отображает в Solution Explorer не все файлы программного решения. Щелкните на значке Show All Files (Показать все файлы) в верхней части Solution Explorer для показа всех файлов, чтобы выбрать файл Codebehind.

Файл Codebehind отобразится с директивами using для классов, необходимых для функционирования веб-формы, с пространством имен и структурой классов. Пространство имен носит то же имя, что и рассматриваемый проект. Имя класса совпадает с именем веб-формы. В листинге 2.9 приведен исходный код веб-формы showGrid. Веб-форма showGrid демонстрирует элемент управления DataGrid. Дизайнер веб-форм разместил защищенный элемент в классе showGrid, представляющий элемент dgChair, добавленный в веб-форму. Ссылка using System.Data.OleDb добавлена для простоты обращения к классам ADO.NET.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //for the OleDbclasses
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
  /// <summary>
  /// Summary description for showGrid.
  /// </summary>
  public class showGrid : System.Web.UI.Page
  {
   protected System.Web.UI.WebControls.DataGrid dgChair;
   private void Page_Load(object sender, System.EventArgs e)
   {
   }
   #region Web Form Designer generated code
   override protected void OnInit(EventArgs e)
   {
    //
    // CODEGEN: This call is required by the 
    // ASP.NET Web Form Designer.
    //
    InitializeComponent();
    base.OnInit(e);
   }
   
   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   { 
    this.Load += new System.EventHandler
            (this.Page_Load);
   }
   #endregion
  }
}
Листинг 2.9. Source Code for showGrid.aspx.cs after DataGrid Added in Design View

Если вам нужно заполнить элемент dgChair данными из таблицы базы данных, то требуется получение набора данных ADO.NET DataSet с информацией из базы данных. Набор DataSet используется для заполнения элемента dgChair при запросе веб-страницы с веб-сервера. При загрузке страницы с веб-сервера вызывается событие Load объекта Page. Класс showGrid наследуется из System.Web.UI.Page, как видно из объявления класса в листинге 2.9, поэтому событие Load также наследуется из System.Web.UI.Page. При выполнении события Load происходит получение набора DataSet и заполнения элемента DataGrid. В листинге 2.10 приведена подпрограмма LoadGrid, реализующая заполнение элемента DataGrid набором DataSet.

private void LoadGrid(DataGrid dg)
{
  //set the connection credentials
  string DataSetName = "myChairs";
  string ConnectionString =
     "Provider=Microsoft.Jet.OLEDB.4.0;" + 
         "Data Source=C:\\aspData\\employees.mdb;"; 

  //make the DB connection
  OleDbConnection myConn = new
   OleDbConnection(ConnectionString);

  //make a data set to hold chairs
  DataSet myDataSet = new DataSet(DataSetName);

  //make a data adaptor
  OleDbDataAdapter myAdapt = new
   OleDbDataAdapter("Select * From tblChair", myConn);

  //fill the dataset
  myAdapt.Fill(myDataSet);

  //get a view in the dataset
  DataView myDataView = new DataView(myDataSet.Tables[0]);

  //show the data view in the Grid
  dg.DataSource = myDataView;
  dg.DataBind();
}
Листинг 2.10. Source Code for Subroutine LoadGrid

LoadGrid представляет собой функцию, входящую в класс showGrid. Функция вызывается посредством размещения следующего вызова в функции события Page_Load файла showGrid.aspx:

LoadGrid(dgChair);
Безопасность ASP.NET

При загрузке страницы showGrid.aspx фиксируется событие Load и вызывается функция LoadGrid. При вызове функции LoadGrid устанавливается подключение к базе данных посредством строковой переменной и инициализируется объект подключения ADO Connection.

Примечание. Следует отметить, что указывать символьные аргументы строки подключения в коде, как в листинге 2.10, крайне не рекомендуется. Это сделано, чтобы показать аутентификационные данные, используемые для подключения, а также метод их применения к объекту Connection. Рекомендуем получать аутентификационные данные, размещая строки подключения к базе данных в файле web.config (см. "Веб-службы ASP.NET" ).

В листинге 2.10 используется источник данных Microsoft Access 2000. Чтобы веб-форма ASP.NET могла считывать и записывать информацию в файл базы данных Access, необходимо настроить файловые разрешения сервера для файлов данных Access ( .mdb ). При использовании базы данных корпоративного уровня, например, SQL Server или Oracle, для передачи аутентификационных данных серверу базы данных при ее запросе веб-формой ASP.NET возможно применение интегрированной безопасности. Аргумент integrated security=sspi в строке подключения к базе данных указывает использование интегрированной безопасности, и аутентификационные данные Windows .NET Server предоставляются источнику данных. Учетная запись пользователя Windows, используемая приложением ASP.NET, меняться в зависимости от следующих критериев.

  • Аутентификация осуществляется для приложения ASP.NET. Анонимная или не анонимная.
  • Используется режим изоляции IIS. Режим изоляции IIS 5.0 или режим изоляции рабочих процессов.

В зависимости от метода аутентификации в приложении IIS ASP.NET использует следующие учетные записи Windows.

  • Гостевая учетная запись Windows IIS для анонимного доступа. IUSER_<имя_компьютера>
  • Субъект пула приложения. Учетная запись Windows, определенная в пуле приложения. Учетными записями по умолчанию являются Network Service (Сетевая служба), Local Service (Локальная служба) и Local System (Локальная система).
  • Учетная запись Windows-аутентифицируемого пользователя, являющегося потребителем приложения. Аутентификационные данные, предоставленные пользователем при аутентификации приложения сервера ASP.NET.

Если IIS настроен на разрешение анонимного доступа к сайту, и для сервера установлен режим изоляции приложения по умолчанию (т.е. режим изоляции рабочих процессов), то ASP.NET использует субъект в пуле приложения, занятом веб-приложением. Если режим изоляции IIS 5.0 используется для обеспечения обратной совместимости, то субъектом пула приложения будет гостевая учетная запись IIS. Если приложение настроено на использование одного из режимов аутентификации, доступных в IIS и предусматривающих предоставление аутентификационных данных пользователем, то IIS по умолчанию использует в качестве субъекта аутентификационные данные. Субъекты, используемые по умолчанию приложением IIS, приведены в табл. 2.1.

В рассматриваемом приложении (или в любом другом) возможны и другие субъекты доступа. Например, для авторизации доступа пользователя к приложению применяется аутентификация форм, и, в то же время, используется специальная учетная запись пользователя для выполнения всех запросов базы данных.

Для веб-формы showGrid.aspx применяется режим изоляции рабочих процессов. Анонимный доступ будет разрешен, поэтому аутентификационными данными учетной записи Windows пула приложений станут входные данные, используемые для доступа к источнику информации. Для файла базы данных Microsoft Access файловые разрешения несущего сервера устанавливаются так, чтобы учетная запись Windows производила чтение, запись и изменение файла .mdb. Если речь идет о базе данный корпоративного уровня, то учетной записи Windows нужно предоставить соответствующий доступ к базе данных на сервере базы данных.

Примечание. Следует помнить, что файл web.config содержит элемент authentication. Режимом элемента аутентификации по умолчанию является Windows. Так как многие программисты используют учетную запись группы администраторов, то впечатление о правильности параметров в форме ASP.NET может быть обманчивым, так как эта учетная запись наделена правами на выполнение практически любых действий в среде разработки. При перемещении приложения на тестовый или конечный сервер с ограниченными разрешениями доступа возможно, что веб-форма не будет функционировать.

Таблица 2.1. Субъекты по умолчанию для приложения ASP.NET
Аутентификация Режим изоляции приложения Учетная запись Windows, используемая ASP.NET
Анонимная Изоляция IIS 5.0 IUSER_<имя_компьютера>.
Анонимная Изоляция рабочих процессов Субъект пула приложения для веб-приложения.
Не анонимная Изоляция IIS 5.0 Аутентификационные данные, предоставленные пользователем при проверке подлинности.
Не анонимная Изоляция рабочих процессов Аутентификационные данные, предоставленные пользователем при проверке подлинности.
< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Олег Корсак
Олег Корсак
Латвия, Рига
Ренат Файзуллин
Ренат Файзуллин
Россия, Казань