• MapPath(). Отображает виртуальный путь запрошенного адреса URL в физический путь на сервере для текущего запроса.
• SaveAs(). Сохраняет информацию текущего HTTP-запроса в файл на Web-сервере (что может оказаться полезным при отладке).
• ValidateInput(). Если с помощью атрибута Validate соответствующей директивы страницы разрешена возможность контроля данных, то этот метод может вызываться для проверки всех вводимых пользователем данных (включая данные cookie) на случай выявления потенциально опасных вариантов ввода (из предусмотренного списка таких вариантов).
Получение статистики браузера
Первый интересным элементом типа HttpRequest является свойство Browser, обеспечивающее доступ к базовому объекту HttpBrowserCapabilities. Объект HttpBrowserCapabilities, в свою очередь, предлагает множество членов, которые позволяют программно исследовать статистику браузера, отправившего поступивший HTTP-запрос.
Создайте новый Web-узел ASP.NET с именем FunWithPageMembers. Нашим первым заданием будет построение пользовательского интерфейса, позволяющего при щелчке пользователя на Web-элементе управления Button увидеть различную информацию о вызывающем браузере. Эта информация будет генерироваться динамически и присваиваться типу Label (с именем lblOutput). Обработчик события Click для Button будет таким.
protected void btnGetBrowserStats_Click(object sender, System.EventArgs e) {
string theInfo = "";
theInfo += String.Format ("‹li›Это клиент AOL? {0}", Request .Browser.AOL);
theInfo += String.Format("‹li›Поддерживает ли клиент ActiveX? {0}", Request .Browser.ActiveXControls);
theInfo += String.Format("‹li›Это клиент Beta? {0}", Request .Browser.Beta);
theInfo += String.Format("‹li›Поддерживает ли клиент Java? {0}", Request. Browser.JavaApplets);
theInfo += String.Format("‹li›Поддерживает ли клиент cookie? {0}", Request .Browser.Cookies);
theInfo += String.Format("‹li›Поддерживает ли клиент VBScript? {0}", Request. Browser.VBScript);
lblOutput.Text = theInfo;
}
Здесь проверяется целый ряд возможностей браузера. Как вы можете догадываться, очень важно выяснить возможность поддержки браузером элементов управления ActiveX, апплетов Java и VBScript клиента. Если вызывающий браузер не поддерживает какую-то из Web-технологий, ваша страница *.aspx должна быть готова выполнить альтернативный план действий.
Доступ к поступающим данным формы
Другими элементами типа HttpResponse являются свойства Form и QueryString. Эти два свойства функционируют аналогично классическому варианту ASP и позволяют анализировать поступающие данные формы, используя пары имен и значений. Вспомните из нашего предыдущего обсуждения классической технологии ASP о том, что при отправке HTTP-данных с помощью GET данные формы будут доступны через свойство QueryString, тогда как для доступа к данным, представленным с помощью POST, используется свойство Form.
Для доступа к данным формы клиента на Web-сервере, конечно, можно использовать свойства HttpRequest.Form и HttpRequest.QueryString, но этот устаревший подход (в большинстве случаев) не является необходимым. Ввиду того, что ASP.NET предлагает свои собственные Web-элементы управления серверной стороны, у вас есть возможность обращаться с HTML-элементами интерфейса, как с настоящими объектами. Таким образом, вместо получения значения текстового блока в варианте
protected void btnGetFormData_Click(object sender, EventArgs e) {
// Получение значения для элемента с ID=txtFirstName.
string firstName = Request.Form["txtFirstName"];
}
вы можете напрямую запросить свойство Text серверного элемента управления.
protested void btnGetFormData_Click(object sender, EventArgs e) {
// Получение значения для элемента с ID=txtFirstName.
string firstName = txtFirstName.Text;
}
Этот подход не только соответствует строгим принципам ООП, но при этом вообще не приходится заботиться о том, как представляются данные формы (GET или POST). К тому же непосредственная работа с элементом управления гораздо больше соответствует требованиям типовой безопасности, поскольку здесь возможные ошибки ввода будут выявлены уже на этапе компиляции, а не в среде выполнения. Конечно, это не значит, что вам в ASP.NET вообще никогда не придется использовать свойства Form и QueryString, но необходимость в их использовании существенно уменьшится.
Еще одним очень важным членом HttpRequest является свойство IsPostBack. Напомним, что "postback" обозначает вторичное обращение к конкретной Web-странице в ходе одного сеанса связи с сервером. С учетом этого должно быть понятно, что свойство IsPostBack возвращает true (истина), если текущий HTTP-запрос отправлен уже зарегистрированным настоящий момент пользователем, и false (ложь), если это первое взаимодействие пользователя со страницей.
Читать дальше