Что такое код asp path


Содержание

Использование 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 добавил:

25.02.2011, 09:03

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), пароль, электронный адрес и т.д. пользователя для обеспечения его уникальности в чат-системе;
  • во-вторых, это, собственно, система представления общего потока текстовых сообщений, позволяющая пользователям просматривать поток текстовых сообщений;
  • в-третьих, это система ввода сообщений, формирующая новые сообщения и вставляющая их в общий поток;
  • в-четвертых, это система самообновления сообщений с задаваемым определенным интервалом времени.

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

Постановка задачи

С программной точки зрения чат-система должна представлять собой совокупность модулей, каждый из которых предназначен для решения одной из вышеизложенных задач. Таким образом, в состав наиболее типичной чат-системы входят:

  1. Модуль идентификации пользователей.
  2. Модуль представления потока сообщений всех пользователей.
  3. Модуль представления имен (псевдонимов) всех подключенных пользователей.
  4. Модуль формирования и ввода новых сообщений.

Что нам понадобится

В настоящей статье мы, как уже упоминалось, умышленно откажемся от всех своих знаний о базах данных и попробуем разработать файл-основанную систему, то есть будем хранить и обрабатывать всю информацию в файлах на нашем гипотетическом сервере, а заодно и изучим способы и методы работы с файлами средствами ASP.

Обзор основ работы с файлами с помощью ASP

Прежде чем приступать к созданию чат-системы, мы должны ознакомиться с набором функций, служащим для обработки файлов.

Основу работы с файлами средствами ASP составляет ключевой метод объекта Server: Server.CreateObject (ObjectID).

Как мы знаем, метод CreateObject позволяет создавать экземпляры других объектов, предоставляя, таким образом, разработчикам доступ к их коллекциям, событиям, методам и свойствам.

Объектом, предоставляющим доступ к файловой системе на сервере, является объект FileSystemObject, позволяющий производить разнообразные операции над текстовыми файлами, папками, а также над логическими дисками посредством ASP-кода. Объект FileSystemObject является частью так называемого Scripting Object.

Для создания экземпляра объекта FileSystemObject необходимо выполнить следующую инструкцию:

Объект Folder

Объект Folder позволяет осуществить доступ к файловой системе на указанном логическом диске. После создания экземпляра объекта FileSystemObject необходимо определить переменную, которая будет служить для хранения экземпляра объекта типа Folder и указывать на папку. Далее с помощью метода GetFolder следует извлечь содержимое нужной нам папки.

Каждый объект Folder имеет коллекцию Files, которая, по сути, представляет собой набор экземпляров объектов типа File.

Давайте рассмотрим следующий небольшой пример, служащий для построения списка всех файлов каталога «c:\inetpub\wwwroot«:

Каждый объект типа File предоставляет доступ к свойствам файла, позволяет выполнять определенные манипуляции над файлами посредством своих методов:

Описание

Содержит атрибуты файла

Содержит дату и время создания файла

Содержит дату и время последнего обращения к файлу

Содержит дату и время последнего изменения файла

Содержит имя логического диска, на котором располагается файл

Описание

Удаляет указанный файл

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 предоставляет два способа авторизации:

  1. Авторизация доступа к файлу
  2. Авторизация доступа к 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 — задаёт разделённый запятыми список имён пользователей.
  • roles — задаёт разделённый запятыми список имён пользовательских групп.
  • verbs — задаёт выражения HTTP, к которым применимы тэги и . Допустимыми значениями являются: GET, HEAD, POST и *, активизирующая все вышеперечисленные режимы.

Атрибут users поддерживает два специализированных обозначения:

  • » * » — все пользователи;
  • «?» — анонимные пользователи.

В этом фрагменте файла конфигурации мы сначала запрещаем доступ всем пользователям, а потом открываем его для двух пользователей: Steve и Mary . Кроме этого, можно свободно смешивать настройки параметров для пользователей и для групп:

В вышеприведённом листинге мы сначала открыли доступ для всех, но потом закрыли его для не зарегистрировавшихся пользователей, т. е. работающих анонимно, и для всех членов группы BUILTIN\Guests . Здесь BUILTIN обозначает коллекцию встроенных ролей, поддерживаемых ASP.NET. Чтобы просмотреть их полный список, вы можете обратиться к следующему перечислению в окне ObjectBrowser Visual Studio.NET:

Вместо ключевого слова BUILTIN вы также можете указывать непосредственно имя домена, на котором хранятся эти группы.

ПРИМЕЧАНИЕ

Для быстрой проверки работоспособности этого типа авторизации вы можете воспользоваться предыдущим примером (см. листинг 1). Для того, чтобы увидеть результат от соответствующего источника, удалите настройки авторизации доступа к файлу, т. е. отмените все установленные ограничения для файла default.aspx . После этого настройте файл конфигурации так, чтобы вашему текущему пользователю был запрещён доступ к узлу. Если всё было выполнено верно, то вы можете увидеть перед своими глазами картину, похожую на рисунок 2.

Рисунок 2. Отказано в доступе

Во всех предыдущих примерах файлов конфигурации проекта мы задавали ограничения на весь Web-узел, а часто нужно задать эти параметры лишь для определённых директорий или файлов. Для решения этой проблемы в файле конфигурации проекта ASP.NET поддерживается специальный тэг, который ограничивает распространение политики авторизации — это тэг . Этот элемент имеет всего два атрибута:

  • path — задаёт путь к ресурсу, для которого будут применены параметры авторизации;
  • allowOverride — разрешает или запрещает (значения true или false соответственно) перекрывать параметры настройки тэга location данными из других файлов конфигурации.

Предположим, у нас есть проект с тремя папками, в каждой из которых содержится информация для соответствующих пользователей, и нам нужно разграничить доступ к информации между группами пользователей. Следующий фрагмент (листинг 2) файла Web.config демонстрирует применение тэга location для достижения этой цели.

Листинг 2. Разграничения прав доступа пользователей

В данном примере параметры авторизации проекта настроены так, что в корневом каталоге доступ разрешён всем: предполагается, что в нём находится страница регистрации, через которую должен пройти каждый ещё не зарегистрировавшийся пользователь. Следующий тэг определяет настройки безопасности для файла admin.aspx, расположенного в папке admin_zone: к нему доступ открыт лишь членам группы Administrators. Далее указываются настройки безопасности для папки user_zone, куда разрешён доступ членам групп Users и Administrators. И, наконец, последний путь — это папка guest_zone: ко всем ресурсам, содержащимся в ней, могут обратиться анонимные пользователи и пользователи, являющиеся членами двух уже ранее названных групп — Users и Administrators.

Ролевая безопасность с применением аутентификации на основе формы

Все предыдущие примеры были ориентированы на применение средств безопасности Windows: это была и аутентификация Windows, имена пользователей и групп тоже принадлежали политике безопасности ОС. Но в некоторых случаях возникает необходимость применения в Web-проекте аутентификации на основе формы, а также выбор такого средства авторизации, которое бы не зависело от настроек безопасности сервера. И такое средство существует: вы по-прежнему продолжаете использовать аутентификацию формой, авторизацию доступа к URL, но информация о пользователях и ролях хранится не в каталоге безопасности Windows, а в любом другом месте.

Чтобы воплотить эту технологию авторизации в жизнь, давайте создадим новый Web-проект и отредактируем файл Web.config следующим образом (листинг 3).

Листинг 3. Web.config

В этом примере мы поместили в одну процедуру две операции проверки: одна — аутентификации, другая — авторизации. Сначала мы проходим аутентификацию, запрашивая данные на пользователя с таким-то именем и паролем из базы. Если пользователь не был найден, выводим соответствующее сообщение об ошибке (см. 4 строку снизу). Если же пользователь обнаружен, то мы определяем его роли, опять запрашивая информацию из базы данных. На основе полученных сведений о ролях формируется аутентификационный билет, который впоследствии шифруется и сохраняется в cookie-файле. И, наконец, пользователь благополучно возвращается на страницу default.aspx.

Поскольку в нашем файле конфигурации были прописаны ограничения доступа для нескольких файлов, то давайте разберём их содержимое (листинг 7).

Листинг 7. default.aspx

После создания этого простого Web-узла вы сможете собственными глазами увидеть плоды своего труда. В приведённом коде указаны все инструкции, необходимые для создания действующей системы безопасности для сайта на базе аутентификации формой и авторизации с помощью URL.

Заимствование полномочий

Заимствование полномочий — это такой режим работы, при котором приложение ASP.NET функционирует от имени конкретного пользователя. Казалось бы, какой смыл вводить заимствование полномочий, если при аутентификации Windows пользователь и так заходит под конкретной учётной записью? Но всё дело в том, что идентификатор пользователя при аутентификации и идентификатор пользователя при заимствовании полномочий — это разные вещи, и применяются они соответственно для получения различной информации.

По умолчанию режим заимствования полномочий в среде ASP.NET отключён. Для его активизации нужно добавить в файл Web.config тэг и присвоить его атрибуту impersonate значение true. Следующий фрагмент файла конфигурации проекта демонстрирует, как это должно выглядеть:

Для демонстрации работы этого режима, используйте следующий код (листинг 8) в странице default.aspx:

В обработчике события загрузки формы для получения идентификатора пользователя объекта WindowsIdentity используется метод GetCurrent, возвращающий идентификатор учётной записи, от имени которой функционирует процесс ASP.NET.

При запуске этого приложения с отключенным заимствованием полномочий ( ) перед вами появится экран, представленный на рисунке 3. Как можно наблюдать, при отключенном заимствовании полномочий в объекте WindowsIdentity содержится идентификатор системного пользователя ASPNET.

ПРИМЕЧАНИЕ

Проследите, чтобы в этом примере анонимный доступ был запрещён

Рисунок 3. Запрещённые заимствование полномочий и анонимный доступ

Теперь, если вы активизируете заимствование полномочий, то увидите результат, представленный в таблице 1.

Таблица 1. Включенное заимствование полномочий и отключенный анонимный доступ

IsAuthenticated True
Authentication type Negotiate
Name BIGDRAGON\B@k$
IsAuthenticated True
Authentication type NTLM
Name BIGDRAGON\B@k$

Как видите, результаты одинаковые, поскольку оба объекта получают информацию о текущем пользователе. Но предыдущие два примера были ориентированы на условия с запрещённым анонимным доступом для аутентификации средствами Windows. Если разрешить анонимный доступ к приложению, то объект User.Identity не вернёт никакого имени пользователя, а его свойство IsAuthenticated будет иметь значение False. В этом нет ничего удивительного, т. к. если в системе аутентификации Windows разрешён анонимный доступ, то пользователь работает анонимно, то есть не проходит аутентификацию.

ПРИМЕЧАНИЕ

Чтобы разрешить анонимный доступ, найдите в IIS ваше приложение и откройте его окно свойств, перейдите во вкладку Безопасность каталога и в рамке, содержащей настройки анонимного доступа, нажмите Изменить . В появившемся окне активизируйте переключатель Анонимный доступ .

В это же время у объекта WindowsIdentity свойство IsAuthenticated будет иметь значение True, а в качестве имени пользователя будет стоять строка следующего формата: IUSR_ , как показано в таблице 2.

Таблица 2. Заимствование полномочий и анонимный доступ разрешены

IsAuthenticated False
Authentication type
Name
IsAuthenticated True
Authentication type NTLM
Name BIGDRAGON\IUSR_BIGDRAGON

Свойство name объекта WindowsIdentity имеет такое значение потому, что оно возвращает идентификатор пользователя, под которым работает процесс ASP.NET, а не пользователь Web-узла. А поскольку процесс не может работать анонимно, то он получает имя от IIS, если его невозможно получить от текущего пользователя.

Если вы были внимательны при выполнении операций по разрешению/запрету анонимного доступа, то могли заметить, что в поле Имя пользователя была как раз подставлена строка вышеуказанного формата: IUSR_ (рис. 4).

Рисунок 4. В поле Имя пользователя содержится строка, определяющая имя процесса ASP.NET при анонимном доступе

Кроме того, в среде ASP.NET предусмотрена возможность указания, от кого именно заимствовать полномочия. С этой целью в тэге предусмотрен атрибут userName, в котором и указывается имя пользователя, у которого необходимо заимствовать полномочия.

ПРИМЕЧАНИЕ

В атрибуте userName имя пользователя указывается вместе с именем домена

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

После запуска тестового приложения с такой конфигурацией на выполнение, состояние объекта User.Identity останется неизменным, а вот в свойстве name объекта WindowsIdentity вместо строки формата IUSR_ появится имя, указанное в атрибуте userName тэга из файла конфигурации проекта, как показано в таблице 3.

Таблица 3. Процесс ASP.NET работает от имени конкретного пользователя

IsAuthenticated False
Authentication type
Name
IsAuthenticated True
Authentication type NTLM
Name BIGDRAGON\AlBa

Если вы отмените анонимный доступ, то объект User.Identity будет содержать идентификатор зарегистрированного пользователя, а в объекте WindowsIdentity по-прежнему будет оставаться имя пользователя, переданное через атрибут userName.

На этом закончим изучение авторизации как средства безовасности среды ASP.NET. Дальнейшее изучение механизма авторизации требует изучения средств авторизации Windows. Среди них можно выделить списки контроля доступа на низком и высоком уровне, контроль доступа архитектуры клиент/сервер, ролевая безопасность Windows и так далее.

Если эта тема вас действительно заинтересовала, то вы можете найти массу материала в библиотеке MSDN:

  • Темы безопасности в рамках ASP.NET доступны в следующей ветке библиотеки MSDN: .NET Development/.NET Security;
  • По вопросам безопасности всей системы в целом следует обращаться к разделу Security/Security (General)/SDK Documentation.

Если у вас нет MSDN-библиотеки, то к её самому свежему изданию можно обратиться через интернет по адресу: http://msdn.microsoft.com/library/.

В третьей, заключительной части данной статьи, мы рассмотрим очень актуальную и интересную тему — криптографию. Кроме теории и алгоритмов криптографии мы рассмотрим с различных сторон средства шифрования, предоставляемые платформой .NET Framework, и создадим простенький метод шифрования.

Как получить текущий каталог проекта из кода C# при создании пользовательской задачи MSBuild?

вместо того, чтобы запускать внешнюю программу с жестко заданным путем, я хотел бы получить текущий проект Dir. Я вызываю внешнюю программу, используя процесс в пользовательской задаче.

Как бы я это сделал? домен приложений.CurrentDomain.BaseDirectory просто дает мне расположение VS 2008.

15 ответов:

вы можете попробовать один из этих двух методов.

скажите, какой из них вам кажется лучше

Я надеюсь, что это поможет:

Это позволит получить каталог проекта

это также даст вам каталог проекта, Перейдя на два уровня вверх от текущего исполняемого каталога (это не вернет каталог проекта для каждой сборки, но это наиболее распространенный).

конечно, вы хотели бы содержать это в какой-то проверки/обработки ошибок.

Если вы хотите узнать, что такое каталог, в котором находится ваше решение, вам нужно сделать это:

Если вы позволите только с GetCurrrentDirectory() метод, вы получаете папку сборки независимо от того, если вы отладки или выпуска. Я надеюсь, что это поможет! Если вы забудете о проверках, это будет выглядеть так:

Если проект выполняется на IIS express, то Environment.CurrentDirectory может указывать, где находится IIS Express ( путь по умолчанию будет C:\Program файлы (x86)\IIS Express ), а не туда, где находится проект.

это, вероятно, наиболее подходящий путь к каталогу для различных видов проектов.

это определение MSDN.

возвращает базовый каталог, который сопоставитель сборок использует для поиска сборки.

Я тоже это искал. У меня есть проект, который запускает HWC, и я хотел бы сохранить веб-сайт из дерева приложений, но я не хочу держать его в каталоге отладки (или выпуска). FWIW, принятое решение (и это тоже) только идентифицирует каталог, в котором работает исполняемый файл.

найти этот каталог, я использую

еще один способ сделать это

Если вы хотите получить путь к папке bin

может быть, есть лучший способ =)

еще одно несовершенное решение (но, возможно, немного ближе к идеалу, чем некоторые другие):

эта версия вернет текущие проекты’ папка, даже если текущий проект не является Startup Project для решения.

первый недостаток заключается в том, что я пропустил все проверки ошибок. Это можно исправить достаточно легко, но это должно быть проблемой только в том случае, если вы храните свой проект в корневом каталоге для диска или используете соединение в вашем пути (и это соединение является потомком папки решения), поэтому этот сценарий маловероятен. Я не совсем уверен, что Visual Studio может справиться с любой из этих настроек в любом случае.

еще одна (более вероятная) проблема, с которой вы можете столкнуться, заключается в том, что имя проекта должны сопоставьте имя папки для проекта, чтобы он был найден.

другая проблема может быть в том, что проект должен находиться в папке решения. Это, как правило, не проблема, но если вы использовали Add Existing Project to Solution возможность добавить проект в решение, то это может быть не так, как ваше решение организовано.

наконец, если вы приложение будет изменять рабочий каталог, вы должны сохранить это значение, прежде чем делать это, потому что это значение определяется относительно текущего рабочего каталога.

конечно, это все также означает, что вы не должны изменять значения по умолчанию для ваших проектов’ Build -> Output path или Debug -> Working directory параметры в диалоговом окне свойства проекта.

после того, как я, наконец, закончил полировку своего первого ответа относительно использования публичных строк для получения ответа, мне пришло в голову, что вы, вероятно, можете прочитать значение из реестра, чтобы получить желаемый результат. Как оказалось, этот маршрут был еще короче:

во-первых, вы должны включить Microsoft.Win32 пространство имен, так что вы можете работать с реестром:

вот основной код:

примечание к этому ответу:

Я использование Visual Studio 2008 Professional Edition. Если вы используете другую версию, (т. е. 2003, 2005, 2010; и т. д.), то вам может потребоваться изменить часть «версия» строки подраздела (т. е. 8.0, 7.0; и т. д.).

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

у меня была аналогичная ситуация, и после бесплодных Googles я объявил публичную строку, которая модифицирует строковое значение пути отладки / выпуска, чтобы получить путь к проекту. Преимущество использования этого метода заключается в том, что, поскольку он использует каталог проекта currect, не имеет значения, работаете ли вы из каталога отладки или каталога выпуска:

тогда вы сможете вызвать его, когда захотите, используя только одну строку:

Это должно работать в большинство случаях.

.net — Как включить вывод asp: SiteMapPath в список?

Я очень незнакома с .NET и VB.NET и не могу понять, как это сделать. Скажем, у меня такой код:

Он выводит связку с > в качестве разделителей, примерно так:

Как я могу превратить это в список, например:

    2 5
  • 14 апр 2020 2020-04-14 12:26:06
  • Kit Sunde

5 ответов

Лучшим вариантом для этого является преобразование SiteMapPath для использования шаблонов.

В вы можете разместить элементы
в нужном вам формате. В

вы можете поместить разделитель.

Оберните элемент управления SiteMapPath тегами

    , и он должен это сделать.

Это отличный вариант при использовании Bootstrap и ASP.NET

  • 14 апр 2020 2020-04-14 12:26:08
  • Alexander

Хотя это немного связано, это решение, которое фактически удаляет промежутки и отображает чистый список.

Во-первых, избавитесь от этих избыточных интервалов, изменив SiteMapPath . Я получил класс NakedSiteMapPath , который делает это. Он по-прежнему позволяет использовать явные промежутки в шаблонах, если необходимо:

С этим пробелы исчезли. Чтобы иметь настраиваемые ссылки, например элементы li , вам нужно будет использовать шаблоны, как уже предлагали другие. Здесь пример части страницы ASPX с NakedSiteMapPath :

  • 14 апр 2020 2020-04-14 12:26:07
  • Marcel

Ближайшим, о котором я могу думать, является размещение вашей карты сайта в элементе управления . Однако это будет выводиться как таблица html, но визуально отобразит список:

Играйте со всеми параметрами стиля и форматирования, чтобы получить желаемый результат. См. здесь для подробного пошагового руководства.

О, и, конечно же, вы могли бы также рассмотреть использование дерева с помощью карты сайта (см. ту же страницу).

  • 14 апр 2020 2020-04-14 12:26:07
  • Edwin de Koning

Пока вы не можете избавиться от тегов span, вы можете выполнить то, что хотите. Я столкнулся с этой же проблемой, потому что я использовал приобретенный шаблон сайта CSS/HTML, который хотел клиент, но все было основано на

    и
    . Рефакторинг CSS был бы слишком болезненным, поэтому я нашел, что это решение хорошо работает без каких-либо изменений в коде CSS.

Вы сделаете две вещи:

  • Переопределить шаблон по умолчанию Node с тем, который использует теги
  • Оберните все это тегом
  • 14 апр 2020 2020-04-14 12:26:07
  • CobaltBlue

Возможно, вы решили это сделать, но вы можете использовать эту функцию для прокрутки всех элементов в корневом каталоге Sitemap и их потомков и создания вложенного списка.

Вы можете удалить If item.HasChildNodes Then sb.Append(ListChildNodes(item)) , если вас интересует только верхний уровень

Для тех, кому нужна версия С#:

Затем в вашем коде вы можете просто вызвать вывод строки на страницу.

Что такое код asp path

ASP – веб-технология, которую в декабре 1996 года представила компания Microsoft для возможности создания интерактивных веб-приложений. ASP – это аббревиатура от Active Server Pages, что переводится, в соответствии с логикой технологии, как «активные серверные страницы». Важно понимать, что ASP не является языком программирования, она только позволяет встраивать в обычный HTML-код сценарии на каком-либо скриптовом языке(Visual Basic Script или Java Script). Таким образом, за счет использования ASP на веб-страницы могут встраиваться элементы с заранее настроенным программным управлением.

Изначально в любом текстовом редакторе создается исходный код программы. По умолчанию используется Visual Basic – если ничего дополнительно не указывать, система будет считать, что программа написана именно на этом языке. Затем файл, которому задается расширение .asp, выкладывается в каталог, имеющий права на выполнение, чтобы сервер мог исполнить этот файл, когда браузер пользователя запросит его. Для пользователя этот файл не виден, поскольку сначала загруженный файл с программой интерпретирует сервер таким образом, что программный код будет отображаться непосредственно в HTML-коде страницы, в скобках вида скобки .

ASP просуществовала в чистом виде до 2002 года. 1 января этого года увидел свет релиз ASP.NET, технологии, в которой были учтены ошибки и недочеты ASP. Устранить их получилось благодаря тому, что новая технология была основана на более функциональной платформе Microsoft .NET.

Синонимы: нет
Все термины на букву «A»
Все термины в глоссарии

Илон Маск рекомендует:  Copy - Функция Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL