Использование Server.MapPath во внешних классах С# в ASP.NET
Я пытаюсь получить абсолютный путь к определенным файлам в классе С#. Server.MapPath отлично работает для ASPX и их страниц с кодом, но это не существует в другом файле класса. Я пробовал HostingEnvironment.MapPath() , но он жалуется, что относительный виртуальный путь не разрешен. Любые мысли?
System.Web уже импортирован.
Класс ServerUtility доступен как экземпляр в вашем HttpContext . Если вы находитесь в среде, где знаете, что она будет выполнена внутри конвейера ASP.Net, вы можете использовать
Вам нужно будет импортировать System.Web .
вы также можете использовать:
Не можете ли вы добавить ссылку на System.Web , а затем вы можете использовать Server.MapPath ?
Изменить: В настоящее время я рекомендую использовать HostingEnvironment.MapPath Method:
Это статический метод в сборке System.Web , который сопоставляет виртуальный путь к физическому пути на сервере. Он не требует ссылки на HttpContext .
ЕСЛИ файл, который вы пытаетесь получить, является местом сборки для типа. Но если файлы относятся к местоположению сборки, вы можете использовать это с пространством имен System.IO , чтобы получить точный путь к файлу.
Я тоже использую это:
Это помогло мне
Теперь, когда вы вызываете метод из codebehind
таким образом ваш код будет простым и одним методом u вы можете использовать несколько путей для каждого вызова:)
Ошибка Access to the path is denied
System.UnauthorizedAccessException: Access to the path ‘D:\Hosting\6612603\html\fon\4.txt’ is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) at Default2.copy(Boolean work)
в web.config добавил:
WebClient DownloadFile ошибка — access denied
При попытке скачать файл xml на сервер вместо данных в файл записывается access denied. Подскажите.
Ошибка Access is denied при публикации на хостинге
Подскажите пожалуйста, от чего возникает такая ошибка? На локальной машине все работает, при.
Ошибка Parser Error Message: Access is denied: ‘WebApplication3’.
При старте ASP.NET приложения вываливается следующая ошибка: Configuration Error Description.
Ошибка запуска: Error while trying to run project: Unable to start debugging on the web server. Access is denied
Вот что пишут в MSDN When you try to debug on an application running on a Web server, you may.
Access to the path’.’ is denied
Здравствуйте много уважаемые товарищи! Изучаю программирование самостоятельно и у меня возникла.
. Часть 9
Без всего может обойтись человек, но только не без человека.
Людвиг Берне
Введение
Развивая тему Интернет-общения, нельзя обойти стороной такой небезынтересный ее компонент, как чат. Согласитесь, что тема актуальна, и именно поэтому в настоящей статье мы продолжим обучение навыкам построения таких систем и освоим процесс создания еще одной из них, реализуя такой компонент, как чат.
Итак, настоящая статья адресована тем читателям, которые хотели бы самостоятельно разработать собственную чат-систему с нуля.
Кроме того, в данной статье детально рассмотрены операции над файлами, выполняемые с помощью ASP. Сделано это умышленно, для того чтобы предложить читателям освоить и этот, прежде незнакомый нам раздел ASP-программирования.
Что же такое чат?
Настоятельно рекомендую вам задаться этим вопросом, прежде чем продолжать чтение настоящей статьи.
Как наверняка известно многим, чат — это некая область окна браузера, в которой пользователи могут просматривать текстовые сообщения других пользователей и добавлять свои. Поток сообщений общий, поэтому сообщение, введенное любым пользователем, доступно для всех (хотя существуют чат-системы с возможностью «уединенной» беседы, то есть когда часть сообщений адресована какому-то конкретному пользователю и для остальных пользователей недоступна).
Таким образом, чат представляет собой одномерный поток текстовых сообщений (в отличие от форума, который является двухмерным потоком текстовых сообщений).
Теперь, когда картина нам в общем ясна, предлагаю разобраться с функционалом чат-систем, который, как правило, состоит из следующих функциональных компонентов:
- во-первых, это система идентификации пользователей. Данная система призвана регистрировать имя (псевдоним, nickname), пароль, электронный адрес и т.д. пользователя для обеспечения его уникальности в чат-системе;
- во-вторых, это, собственно, система представления общего потока текстовых сообщений, позволяющая пользователям просматривать поток текстовых сообщений;
- в-третьих, это система ввода сообщений, формирующая новые сообщения и вставляющая их в общий поток;
- в-четвертых, это система самообновления сообщений с задаваемым определенным интервалом времени.
Этот список можно продолжать, однако, чтобы не усложнять изложение материала, мы не будем этого делать в настоящей статье, а ограничимся лишь наиболее типичными требованиями.
Постановка задачи
С программной точки зрения чат-система должна представлять собой совокупность модулей, каждый из которых предназначен для решения одной из вышеизложенных задач. Таким образом, в состав наиболее типичной чат-системы входят:
- Модуль идентификации пользователей.
- Модуль представления потока сообщений всех пользователей.
- Модуль представления имен (псевдонимов) всех подключенных пользователей.
- Модуль формирования и ввода новых сообщений.
Attributes |
DateCreated |
DateLastAccessed |
DateLastModified |
Drive |
Устанавливает или возвращает имя файла |
Содержит путь к файлу |
Содержит размер файла в байтах |
Содержит информацию о типе файла |
Копирует указанный файл из одного места в другое |
Переносит указанный файл из одного места в другое |
Delete |
Объект Drive
Объект FileSystemObject содержит свойство Drives, которое возвращает коллекцию всех объектов типа Drive, присутствующих в системе. Следующий код в качестве выхода генерирует список всех логических дисков и указывает их тип, а также метку тома:
Каждый экземпляр (item) коллекции Drives является объектом типа Drive. Рассмотрим свойства и методы последнего:
Описание
AvailableSpace
Содержит информацию о доступном дисковом пространстве
DriveLetter
Содержит букву логического диска.
Drive Type
Содержит значение кода типа устройства.
0 — Неизвестное устройство
1 — Съемное устройство
2 — Жесткий диск
3 — Сеть
4 — Cd-Rom
5 — RAM-диск
FileSystem
Возвращает идентификатор типа файловой системы носителя
FreeSpace
Содержит информацию о свободном дисковом пространстве
IsReady
Логическая переменная, определяющая готовность устройства
Содержит путь к логическому устройству
RootFolder
Возвращает объект типа Folder, являющийся корневой папкой устройства
Serial Number
Возвращает уникальный серийный номер устройства в десятичном формате
ShareName
Возвращает имя «разделенного» сетевого ресурса
TotalSize
Содержит информацию о полном дисковом пространстве (в байтах)
VolumeName
Содержит метку тома устройства
Несколько методов открытия и создания файлов
Метод OpenTextFile — открывает указанный файл и возвращает объект типа TextStream, который может быть использован для перезаписи, для добавления в файл или для чтения из файла. Синтаксис:
Объект — имя экземпляра объекта типа FileSystemObject.
Имя — строка текста с указанием имени файла.
Режим — указывает на режим открытия (создания) файла. Возможные значения (для записи, для чтения и для добавления):
Описание
ForReading
Файл открывается только для чтения. Запись невозможна
ForWriting
Файл открывается только для записи. Чтение невозможно
ForAppending
Файл открывается только для записи в конец
Создание — булево выражение, указывающее на необходимость записи нового файла, в случае если файл с указанным именем не существует: True — файл будет создан; False — файл не будет создан.
Формат — определяет формат открываемого файла и может принимать одно из следующих значений:
Описание
TristateUseDefault
Открыть файл в системном формате по умолчанию
TristateTrue
Открыть файл в режиме Unicode
TristateFalse
Открыть файл в режиме ASCII
Приведем пример использования функции OpenTextFile для записи в файл:
Метод CreateTextFile — служит для создания указанного файла и возвращает TextStream-объект, используемый для чтения из файла или записи в файл. Синтаксис:
Объект — имя экземпляра объекта типа FileSystemObject.
Имя — строка текста с указанием имени файла.
Перезапись — булево выражение, указывающее на то, будет ли осуществлена перезапись файла: True — перезапись разрешена; False — перезапись запрещена.
unicode — булево выражение, указывающее режим создания файла: True — создаваемый файл формата Unicode; False — создаваемый файл формата ASCII (по умолчанию).
Приведем пример использования функции CreateTextFile для создания файла:
Заметьте, что если параметр Перезапись выставлен в False или не указан, либо если файл с указанным в функции именем уже существует, то произойдет ошибка.
Метод GetFile — служит для извлечения объекта типа File, соответствующего файлу, указанному в качестве параметра:
Объект — имя экземпляра объекта типа FileSystemObject.
Путь — абсолютный или относительный путь к файлу.
Если указанный файл не существует, то происходит ошибка.
Приведем пример использования функции GetFile для извлечения информации о файле:
Теперь, когда мы приобрели навыки обработки файлов, папок и логических устройств, можно переходить к созданию самой чат-системы.
Структура приложения
Однако прежде чем приступать к созданию файл-основанного чата, давайте представим себе, каким же образом будет осуществляться обмен сообщениями — ведь в качестве носителя данных у нас выступает не база данных, а файлы на жестком диске сервера. Да очень просто: все текстовые сообщения, предварительно обрамленные в необходимые HTML-тэги форматирования, будут «складываться» в отдельный файл (назовем его файлом чат-сообщений «Chat.txt»), после чего будет генерироваться страница на основе этого файла, которая будет доступна всем пользователям нашего чата. Аналогичные действия необходимо проделать и со страницей псевдонимов, которая, в свою очередь, будет генерироваться на основании файла псевдонимов «Nicks.txt». Таким образом, файл nicks.txt будет содержать информацию о пользователях, находящихся в режиме онлайн. А выход того или иного пользователя из чата должен сопровождаться удалением его имени из файла псевдонимов.
Вход в чат (файл Entrance.asp)
Главная страница чата предназначена для выбора пользователем имени-псевдонима, указания им предпочтительного цвета имени, а также для нескольких настроек: количества одновременно отображаемых сообщений и времени обновления текстовой страницы в секундах.
После этого в файл с псевдонимами вносится соответствующее имя (предварительно проверяется его уникальность) и пользователь попадает в главное окно нашего чат-приложения.
Просмотреть полученную страницу входа в чат можно здесь.
Просмотр списка сообщений чата (файл Text.asp)
Теперь нам нужно разработать страничку, содержащую все пользовательские сообщения. Она по сути должна отображать содержимое соответствующего файла сообщений Chat.txt. Страничка должна самообновляться каждые Session(«RefreshTime») секунд:
Посылка сообщения в чат (файл Chat.asp)
Теперь нам потребуется страничка посылки сообщений в чат. Для этого понадобится HTML-форма с текстовым полем ввода сообщения, парой кнопок и «радиопереключателем» смайликов к сообщениям. Последние лежат в каталоге Images к исходникам настоящей статьи. После нажатия пользователем на кнопку «Сказать», необходимое сообщение, обрамленное соответствующими тэгами (цвет, смайлик) попадет в чат-файл.
Как видите, все довольно просто, и в результате у нас получился инструмент ввода сообщений в чат. Нам осталось только разработать страничку, аналогичную Text.asp, но показывающую не текстовые сообщения, а список псевдонимов (кто в чате) и упорядочить все страницы проекта с помощью фреймов.
Показ псевдонимов (кто в чате) — файл Nicks.asp
Все делается аналогично страничке Text.asp: самообновление страницы, показ списка пользователей. Здесь нет ничего сложного, и нам необходимо просто извлечь из файла список имен-псевдонимов и показать его:
Немного об оформлении
Теперь нам надлежит оформить одну страницу из трех (Chat.asp, Nicks.asp и Text.asp) с помощью фреймов. Для начала создадим вертикальный фрейм:
затем представим горизонтальный фрейм следующим образом:
Просмотреть полученную страницу можно здесь.
Заполнение пустых файлов (файл global.asa)
Теперь нужно сформировать файлы Chat.txt и Nicks.txt. Для удобства вставим код по их перезаписи в событие Application_OnStart, то есть фактически перезапись этих файлов будет выполняться каждый раз, когда будет стартовать IIS и когда первый пользователь обратится к странице нашего приложения. Как видите, здесь имеет место перезапись файлов с добавлением в каждый из них одной пустой строки (метод .WriteBlankLines(1)).
Заключение
В заключение хотелось бы остановиться на сильных и слабых сторонах рассмотренной нами чат-системы. Прежде всего, очевидное достоинство файл-основанной системы заключается как в простоте программного подхода, так и в организации хранения данных. Однако не стоит забывать о том, что данный пример намеренно создан с целью обучения работе с файлами средствами ASP и не предназначен на роль «двигателя» для реального, активно посещаемого чата, хотя и может быть использован в этом качестве в относительно небольших чат-приложениях. Другое дело, что реализованный на базе какой-нибудь СУБД чат будет работать несколько надежнее и быстрее, чем в данном случае, и его производительность будет в меньшей степени зависеть от транзакционной нагрузки на сервер. Еще одним вариантом построения чат-системы может служить хранение общего поля текста чата в какой-нибудь переменной ASP-приложения (в области видимости Application). Однако здесь также есть свои ограничения, зависящие от роста количества пользователей системы. Тем не менее автор настоящей статьи постарается рассмотреть все указанные варианты построения чат-систем в следующих статьях серии «ASP на блюдечке».
Полный архив исходных текстов ASP-страниц к настоящей статье лежит здесь.
code path
Универсальный англо-русский словарь . Академик.ру . 2011 .
Смотреть что такое «code path» в других словарях:
Code coverage — is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing.[1] Code coverage was among … Wikipedia
Path mtu discovery — (PMTUd) est une technique permettant de déterminer, dans un réseau informatique, la taille du MTU sur le chemin entre deux hôtes IP, afin d éviter la fragmentation des paquets. Il est défini pour ICMP par le RFC 1191 et pour ICMPv6 par la RFC… … Wikipédia en Français
Path MTU discovery — (PMTUd) est une technique permettant de déterminer, dans un réseau informatique, la taille du MTU sur le chemin entre deux hôtes IP, afin d éviter la fragmentation des paquets. Il est défini pour ICMP par le RFC 1191 et pour ICMPv6 par la RFC… … Wikipédia en Français
Path MTU Discovery — ist ein Verfahren zum dynamischen Erkennen der Maximum Transmission Unit (MTU) und damit der maximalen Paketgröße für einen bestimmten Pfad im Netzwerk. Im Allgemeinen kann mit dieser Information Overhead vermindert und Fragmentierung von… … Deutsch Wikipedia
Code of the Clans — … Wikipedia
Code: Breaker — Code:Breaker Cover of the first volume コード: ブレイカー (Kōdo:Bureikā) Genre Action, School Life, Supernatural, Comedy … Wikipedia
Code Lyoko: Fall of X.A.N.A. — Code Lyoko: Fall of X.A.N.A. Code Lyoko: Fall of X.A.N.A. cover art Developer(s) Neko Entertainment Publisher(s) … Wikipedia
$PATH — Variable d environnement En informatique, les variables d’environnement sont des variables dynamiques utilisées par les différents processus d’un système d’exploitation (Windows, Unix, etc.). Elles servent à communiquer des informations entre… … Wikipédia en Français
$path — Variable d environnement En informatique, les variables d’environnement sont des variables dynamiques utilisées par les différents processus d’un système d’exploitation (Windows, Unix, etc.). Elles servent à communiquer des informations entre… … Wikipédia en Français
Code division multiple access — This article is about a channel access method. For the mobile phone technology referred to as CDMA, see IS 95 and CDMA2000. Multiplex techniques Circuit mode (constant bandw >Wikipedia
Path (computing) — A path is the general form of a file or directory name, giving a file s name and its unique location in a file system. Paths point to their location using a string of characters signifying directories, each path component separated by a… … Wikipedia
Что такое код asp path
Этот текст предназначен для тех, кто никогда не имел дела с ASP и вообще смутно себе представляет возможности программирования на стороне сервера. Я ставил себе задачу создать у читателя общее представление о предмете. Отдельные неточности при этом менее важны — пожалуйста, громко не ругайтесь.
Общие сведения
ASP (Active Server Pages) – это мощная технология от Microsoft, позволяющая легко разрабатывать приложения для WWW. ASP работает на платформе Windows NT и IIS (Internet Information Server), начиная с версии 3, хотя вроде есть реализации на других платформах. ASP – это не язык программирования, это внутренняя технология, позволяющая подключать программы к Web-страницам. Основа успеха ASP – простой скриптовый язык (Visual Basic Script или Java Script) и возможность использования внешних COM-компонент.
Как это все происходит?
Вы пишете программу и складываете в файл на сервере. Браузер клиента запрашивает файл. Файл сначала интерпретируется сервером, на выходе производится HTML-код. Этот HTML посылается клиенту. Файлы с программами имеют расширение .asp. Файлы asp – это обычные текстовые файлы, содержащие исходные тексты программ. Файлы делаются с помощью любого текстового редактора. Каталог, в котором размещены файлы asp должен иметь права на выполнение, так как сервер исполняет эти файлы, когда браузер их запрашивает. Собственно программы пишутся на любом скриптовом языке, который установлен в системе. По умолчанию поддерживаются VBScript и JavaScript. Можно доустановить другие (например, Perl). Если ничего специально не указывать используется VBScript. В дальнейшем будем ссылаться только на него. Программные фрагменты заключаются в скобки . Можно ставить открывающую скобку в начале файла, закрывающую – в конце, все что между ними – программа на Visual Basic’е.
Какие средства есть для программирования?
Web – нормальная среда программирования, если правильно понять, что есть что. В VBScript есть все нормальные конструкции структурного программирования (if, while, case, etc). Есть переменные (описывать не обязательно, тип явно не задается). Поддерживаются объекты. Работа с ними обычная – Object.Property, Object.Method. Есть ряд встроенных объектов (Request, Response, Session, Server, Connection, Recordset). Можно доустанавливать другие компоненты (скачивать, покупать, программировать), например для работы с электронной почтой.
Вывод
Понятия «экран», куда можно выводить данные нет. Все, что надо показать пользователю, выбрасывается в выходной поток на языке HTML. Браузер пользователя интерпретирует этот HTML. Для упрощения вывода существует объект Response . Вывод осуществляется с помощью метода Write .
Так производится запись во внутренний буфер объекта Response. Когда скрипт заканчивает работу, весь буфер выдается клиенту. Надо заметить, что клиент получает «чистый» HTML, таким образом программы на ASP не зависят от клиентского ПО, что очень важно. Если внутри выводимой строки нужно использовать кавычку, кавычка удваивается. Другие методы и свойства Response позволяют управлять выводом. Так Response.Buffer регулирует, получает ли клиент данные по мере из записи в Response, или все сразу по завершении исполнения страницы. Метод Response.Redirect перенаправляет браузер на другую страницу. Чтобы им пользоваться, нельзя до него на странице использовать Response.Write.
Программа на ASP не может явно спросить пользователя о чем-то. Она получает данные из других страниц, либо через URL. Передаваемые параметры помещаются во входной поток и доступны через объект Request . Чтобы передать переменную var в программу test.asp , надо написать:
Чтобы из программы получить значение этой переменной, надо написать:
Несколько переменных разделяется знаком &:
Кроме того, чтобы задавать параметры в URL, можно воспользоваться формами HTML. В вызывающей странице пишем так:
Так это выглядит:
При этом пользователь увидит форму из одного поля ввода (var1), в нем будет значение по умолчанию «default». Второе поле (var2) будет невидимо и будет передавать всегда фиксированное значение «var2value». Кнопка «Submit Form» завершает заполнение формы и передает все переменные на test.asp (action). Если method=»get», переменные передаются через URL (test.asp?var1=default&var2=var2value). Если method=»post», передаются вместе с запросом так, что внешне передача переменных не заметна. В вызываемой программе безразлично, какой метод изпользовался (почти). Если у вас нет специальных аргументов за метод GET, используйте метод POST.
Формы
Формы HTML используются для организации диалога с пользователем. Поддерживаются стандартные элементы управления. Все многообразие задается немногими тэгами:
- INPUT (с параметром TYPE=)
- SELECT
- TEXTAREA
Описание – в документации по HTML.
Взаимосвязь между отдельными страницами
Обычно сервер WWW не хранит состояние приложения, т.е. все запросы взаимонезависимы, и нет стандартного способа понять, что несколько запросов пришли от одного и того же пользователя. Но это очень нужно для разработки полноценных приложений и является одной из главных проблем разработки Web-приложений.
Один из методов решения этой проблемы — cookies . Пользователю при первом обращении выдается специальный идентификатор, после этого браузер пользователя предъявляет этот идентификатор при каждом обращении, и сервер может распознать, что это тот же самый пользователь. Пользователь может отключить cookies, в этом случае этот метод не работает.
ASP, используя cookies, предоставляет программисту более простое средство — объект Session (сессия). Сессия стартует, когда новый пользователь обращается к любому asp-файлу приложения. Сессия заканчивается при отсутствии активности пользователя в течение 20 минут, либо по явной команде. Специальный объект Session хранит состояние сессии. Туда можно записывать переменные, которые доступны из любой страницы в этой сессии. Записать данные в этот объект можно просто:
Считать потом еще проще:
Сессия, таким образом, – это еще один метод передачи данных между страницами. Одна страница пишет данные в сессию, другая – берет потом оттуда.
Наряду с объектом Session существует объект Application . Если сессия создается для каждого нового пользователя, до Application существует в единственном экземпляре, и может использоваться всеми страницами приложения.
Управление приложением
Программисту предоставляется возможность реагировать на 4 события: старт/стоп приложения и старт/стоп каждой сессии. Для реализации этих событий предназначен файл global.asa , который должен располагаться в корневом каталоге приложения. Вот его примерный скелет:
Нужно «просто» вписать Ваш код на соответствующее место. Нужно заметить, что отлаживать код для global.asa довольно непросто, так как он выполняется при очень специфических обстоятельствах (к примеру при старте или остановке сервера).
Использование внешних компонент
Если на сервере установлены дополнительные компоненты, их можно использовать из ASP. Стандартные объекты (например из библиотек ADO (Connection и Recordset) и Scripting (Dictionary, FileSystemObject)) доступны всегда. Установка новой компоненты обычно состоит в копировании dll-файла в каталог на сервере и ее регистрации с помощью программы regsvr32.exe. [В COM+ используется своя процедура инсталляции объектов, это однако не влияет на использования объектов.]
Создать экземпляр объекта можно так:
Class.Object указываются в документации на компоненту. В переменной var запоминается ссылка на созданный экземпляр объекта. Когда объект не нужен, ссылку нужно обнулить с помощью команды:
Пожалуйста всегда обнуляйте все ссылки на объекты, когда они больше не нужны. Теоретически это должно происходить автоматически при завершении процедуры/страницы, однако в стандартной сборке мусора есть определенные «проблемы».
В остальном использование компоненты зависит от самой этой компоненты.
Работа с базами данных
Из ASP можно легко и просто работать с любыми базами данных. Это делается через две промежуточные технологии: ODBC и ADO.
ODBC позволяет организовать доступ к любым базам данных через унифицированный интерфейс с помощью языка SQL. Специфика конкретных СУБД учитывается при помощи специальных драйверов БД. Такие драйверы существуют для всевозможных СУБД (в частности SQL Server, Oracle, Access, FoxPro). Поддержка ODBC обеспечивается на уровне операционной системы Windows (NT). Настройка – через Control Panel/ODBC. Базовым понятием является источник данных или data source. Источник данных – это совокупность сведений о базе данных, включая ее драйвер, имя компьютера и файла, параметры. Чтобы пользоваться базой надо создать источник данных для нее. Важно, чтобы источник данных был «системным», в отличии от «пользовательского». После этого надо лишь знать имя источника данных. [В настоящее время ODBC отступает перед натиском технологии OLE DB. На практике это однако практически ничего не изменяет. Вместо имени источника данных нужно использовать Connection String, в которой указывается имя ODBC-драйвера и все его параметры.]
ADO – это совокупность объектов, доступных из ASP, позволяющих обращаться к источнику данных ODBC [или OLE DB]. Фактически нужны лишь 2 объекта – Connection , представляющий соединение с базой данных и Recordset , представляющий набор записей, полученный от источника. Сначала необходимо открыть соединение, потом к нему привязать Recordset, потом, пользуясь методами Recordset’а, обрабатывать данные. Вот пример:
Если команда SQL не возвращает данных, recordset не нужен, надо пользоваться методом Conn. Execute (SQL_COMMAND).
Если Вы хотите вызывать хранимые процедуры сервера БД с параметрами, нужно воспользоваться объектом Command , который в свою очеред содержит объекты Parameter .
Методики программирования, советы
Описание переменных
VBScript — очень нетребовательный к программисту язык. Так он не требует описывать переменные и не содержит явных типов данных. Все переменные принадлежат одному типу Variant . Из-за отсутствия описаний могут произойти очень трудно обнаруживаемые ошибки. Одна опечатка может стоить полдня поисков.
Однако, есть возможность явно потребовать описания переменных. Для этого первой строкой в ASP-файле нужно написать Option Explicit . После этого обращение к переменной, которая не была объявлена с помощью Dim , вызывает ошибку с указанием номера строки.
Кстати, где расположены описания Dim в процедуре — совершенно не важно. Они могут стоять как до использования переменной, так и после, и даже в цикле. Видимо они отрабатываются препроцессором. Явно задать тип переменной с помощью Dim Var as Typ , как в Visual Basic, все равно нельзя.
Чередование ASP/HTML
Если нужно выдать большой кусок HTML, можно не пользоваться Response.Write. Если в asp-файле встречается кусок текста вне скобок , он трактуется просто как HTML, который надо вывести. Пример:
Обработка ошибок
Для отслеживания ошибок используется специальный объект Err . Он устанавливается в ненулевое значение, если предыдущая команда породила ошибку. Ее можно проверять с помощью If, и таким образом реагировать на ошибки. Чтобы из-за ошибки не прерывалось выполнение программы, в начале нужно включить команду
Включение других файлов
Можно выносить повторяющийся код в отдельный файл, и подключать к разным другим по мере необходимости с помощью команды include . Это очень удобно, если вы хотите вынести повторяющийся код в отдельный файл и использовать снова и снова в разных страницах:
Важно: все includes в тексте отрабатываются до исполнения файла. Т.е. даже если include стоит внутри if, то сначала будут включены все includes во всех ветках, и только потом, во время исполнения, будет принятно решение, какую ветку выполнять. Т.е. следующий код не дает условного включения файлов:
Обработка форм
Если надо что-то спросить у пользователя и на основании этого что-то сделать, в простейшем случае создается два файла: один с формой, второй – с ее обработчиком. Обработчик выполняет все действия. Пример:
Рекурсивная обработка форм
Удобный метод состоит в том, чтобы сбор данных и обработку осуществлял один и тот же файл. Для этого пишется asp, в котором есть разные разделы. Специальная переменная отвечает за выбор раздела при запуске. Пример:
Переменные HTTP
Запрос от браузера, кроме запрашиваемой страницы несет еще некоторые данные. Эти данные, например, IP-адрес клиента, доступны через специальные переменные объекта Request. IP-адрес – Request(«REMOTE_ADDR»). Другие — см.документацию (ASPSamp\Samples\srvvar.asp).
Переадресация
Очень легко написать на ASP скрипт, который будет производить некоторые расчеты, и в зависимости от результатов переадресовывать браузер на разные URL (например, подставлять нужный баннер). Делается это так:
Только надо следить, чтобы до выполнения команды redirect ничего не было записано в Response (даже коментарии HTML).
Электронная почта
Одна из часто встречающихся задач – отправить электронную почту с Web-страницы. На первый взгляд, можно просто написать
Но это приводит к тому, что при отправке формы делается попытка на клиентской машине запустить почтовую программу и создать новое сообщение с данными формы. Если это не получается (почтовая программа не настроена, пользователь не отправил почту, и т.д.) — письмо и не будет отправлено. Гораздо надежнее работает серверное решение.
Для этого существуют внешние компоненты, есть и бесплатные. Например, компонента Jmail от Dimac. Все, что для нее нужно – это адрес SMTP-сервера. Вот пример ее использования:
. что такое переменная среды PATH?
Что такое вообще переменная среды?
Когда операционная система запускает какую-нибудь программу, она стартует новый процесс и каким-то образом передаёт ему информацию о настройках среды, или окружения (в английском языке используется термин environment). Эта информация состоит из набора переменных, содержащих некоторые значения. Процесс может получить эти значения, обратившись к нужной переменной по имени. Например, чтобы узнать, где находится директория, которую операционная система рекомендует использовать для хранения временных файлов, необходимо получить значение переменной среды TEMP .
Как посмотреть значения переменных среды?
В консоли Windows можно посмотреть значение этой переменной, выполнив команду echo %TEMP% , в консоли PowerShell необходимо для этого выполнить команду echo $Env:TEMP , а в консоли Linux или MacOS – команду echo $TEMP .
Если вы пишете программу на языке программирования Python, значение этой переменной можно получить так:
В языке Java это можно сделать следующим образом:
В языке C# аналогичное действие выглядит следующим образом:
На что влияет переменная окружения PATH ?
При помощи переменных окружения можно передавать информацию не только запускаемым процессам, но и самой операционной системе. Она тоже читает и использует значения переменных окружения, поэтому можно управлять некоторыми аспектами поведения операционной системы, изменяя переменные окружения.
Переменная PATH содержит список директорий, в которых операционная система пытается искать исполняемые файлы, если пользователь при запуске не указал явно путь к нужному исполняемому файлу.
Давайте представим себе, что на компьютере с операционной системой Windows установлено две разных версии интерпретатора языка программирования Python. Это можно сделать, если установить их в разные директории, например, C:\Python27 и C:\Python34 . Исполняемый файл для обоих версий называется python.exe .
Для того, чтобы запустить исполняемый файл нужной версии, можно указать полный путь к нему, например, C:\Python34\python.exe :
Но каждый раз указывать полный путь лень, да ещё и помнить его надо.
Альтернатива – добавить в переменную окружения PATH путь к директории, где находится этот исполняемый файл, и тогда его можно будет запускать, указывая только имя. А чтобы узнать, где он (по мнению операционной системы) находится, можно использовать команду where в операционной системе Windows либо команду which в операционной системе Linux или MacOS.
Эта переменная содержит список директорий, в которых операционная система должна искать исполняемые файлы. В качестве разделителя используется точка с запятой (;) в операционной системе Windows и двоеточие (:) в операционных системах Linux и MacOS.
Обратите внимание, что в переменную PATH нужно добавлять не пути к исполняемым файлам, а пути к директориям, где они находятся!
Переменная PATH и программы-утилиты
Не обязательно добавлять в переменную PATH пути ко всем директориям, в которых находятся исполняемые файлы на вашем компьютере. Скорее всего большинство программ вы запускаете “через меню старт”. На этот способ запуска переменная PATH никакого влияния не оказывает. Её важно настроить так, чтобы можно было быстро и удобно запускать всякие мелкие программы из консоли.
Например, в эту переменную обычно включается путь к “стандартным” местам, где расположены различные мелкие программы-утилиты. В операционной системе Windows это директория C:\Windows\system32 , в операционных системах Linux и MacOS директория /usr/bin .
Именно благодаря этому мы можем, например, в консоли Windows использовать утилиту find для поиска файлов или утилиту telnet для установления удалённого соединения по одноимённому протоколу, просто указывая их имя, а не полный путь c:\Windows\system32\telnet.exe .
Когда у вас появляется новая программа-утилита, возникает вопрос – куда её поместить? С одной стороны, её можно положить в C:\Windows\system32 или /usr/bin . Но если вы не любите “засорять” стандартные директории, тогда сделайте какую-нибудь специальную директорию, складывайте все такие небольшие программы в неё, и добавьте путь к этой директории в переменную окружения PATH .
Как изменять значения переменных среды?
Пользователям других операционных систем предлагаю погуглить
Переменную поменял, но эффекта нет. Почему?
Когда вы меняете значение некоторой переменной окружения, об этом узнаёт только операционная система. При запуске новых программ она сообщит им новые значения переменных. Но ранее запущенные программы будут продолжать использовать те значения переменных окружения, которые были актуальны на момент запуска программы.
Поэтому после изменения переменных окружения придётся перезапустить те программы, которым необходимо сообщить новые значения переменных.
Автор: Алексей Баранцев
Если вам понравилась эта статья, вы можете поделиться ею в социальных сетях (кнопочки ниже), а потом вернуться на главную страницу блога и почитать другие мои статьи.
Ну а если вы не согласны с чем-то или хотите что-нибудь дополнить – оставьте комментарий ниже, может быть это послужит поводом для написания новой интересной статьи.
Средства безопасности ASP.NET. Часть 2 — Авторизация
Первая часть статьи была посвящена аутентификации. В ней были рассмотрены теория аутентификации, разобраны все три способа аутентификации в среде .NET Framework. Во второй части статьи будет рассмотрен ещё один аспект компьютерной безопасности — авторизация. Для начала напомним, что же такое авторизация. Авторизация — это проверка прав доступа к определённому ресурсу, или проверка привилегий на выполнение определённых действий. В качестве примера можно привести ограничение прав доступа к определенным файлам. Давайте посмотрим на вопрос авторизации не глазами пользователя, а глазами программиста, который сам диктует правила игры.
Среда ASP.NET предоставляет два способа авторизации:
- Авторизация доступа к файлу
- Авторизация доступа к URL
Авторизация доступа к файлу
Суть авторизации доступа к файлу (File Authorization) заключается в настройке политики безопасности для конкретного файла в отдельности. При этом все параметры зависят от поддерживаемых средств безопасности Windows.
При авторизации доступа к файлу применяются списки контроля доступа ACL (Access Control List), в которых содержится информация о том, кому разрешён доступ к определённому ресурсу. Список контроля доступа последовательно просматривается на совпадение текущего зарегистрировавшегося пользователя с компонентами списка, если совпадений не будет, то система вернёт сообщение о том, что нет права доступа к данному ресурсу.
В связи с тем, что авторизация доступа к файлу основывается на системных механизмах ОС, при аутентификации тоже необходимо использовать аутентификацию Windows. Для этого в файле конфигурации проекта должна присутствовать следующая строка: Этот атрибут в проекте ASP.NET Web Application установлен по умолчанию, поэтому нет необходимости вручную вносить изменения в файл конфигурации.
Чтобы посмотреть, как действует этот механизм, создайте новый проект типа ASP.NET Web Application, переименуйте страницу ASP.NET в default.aspx и введите следующий код (листинг 1).
Листинг 1. default.aspx
Теперь откройте Explorer и найдите этот файл (по умолчанию он должен находиться по следующему адресу: C:\Inetpub\wwwroot\ \default.aspx). Далее щёлкните по нему правой кнопкой мыши и откройте окно свойств. Перейдите на вкладку Безопасность и добавьте в список допустимых имён группу администраторов (см. рисунок 1). Запустите Web-приложение, и если текущий пользователь является членом группы администраторов, то вы увидите дружелюбное приветствие, если же нет, то соответствующее сообщение об ошибке.
Рисунок 1. Установка авторизации доступа к файлу
Авторизация доступа к URL
Авторизация доступа к файлу — это старая технология, имеющая ряд недостатков: необходимость поддержки списков контроля доступа, более того, при передаче файлов по протоколу FTP списки ACL часто теряются, что зачастую приводит к нежелательным последствиям.
ПРИМЕЧАНИЕ
Сервер IIS поддерживает только авторизацию доступа к файлам, что в свою очередь сказалось на предыдущих версиях ASP, т. е. они тоже поддерживали лишь этот вид авторизации. Авторизация доступа к URL является новшеством, появившемся в ASP.NET. Кроме этого, если в настройках сервера IIS запрещен анонимный доступ, то управление авторизацией осуществляется сервером IIS, а если анонимный доступ к Web-узлу разрешён, то авторизацию уже контролирует ASP.NET. Для использования авторизации доступа к URL сначала нужно настроить файл конфигурации проекта. За настройку авторизации отвечает тэг , который может содержать в себе только два типа элементов: Каждый из этих элементов поддерживает 3 атрибута:
Атрибут users поддерживает два специализированных обозначения:
В этом фрагменте файла конфигурации мы сначала запрещаем доступ всем пользователям, а потом открываем его для двух пользователей: Steve и Mary . Кроме этого, можно свободно смешивать настройки параметров для пользователей и для групп: В вышеприведённом листинге мы сначала открыли доступ для всех, но потом закрыли его для не зарегистрировавшихся пользователей, т. е. работающих анонимно, и для всех членов группы BUILTIN\Guests . Здесь BUILTIN обозначает коллекцию встроенных ролей, поддерживаемых ASP.NET. Чтобы просмотреть их полный список, вы можете обратиться к следующему перечислению в окне ObjectBrowser Visual Studio.NET: Вместо ключевого слова BUILTIN вы также можете указывать непосредственно имя домена, на котором хранятся эти группы.
|