Папка общего кода на веб-сайте asp.net
Если ваше веб-приложение включает код, который вы хотите использовать на нескольких страницах, вы можете сохранить код в файле в двух специальных папках (папка Bin и папка App_Code) в корневом каталоге веб-приложения Clamped. Когда вы создаете эти папки и храните в них файлы определенных типов, ASP.NET обрабатывает эти файлы особым образом.
Папка Bin. Скомпилированные сборки можно хранить в папке Bin, а другой код (например, код страницы) в любом месте веб-приложения автоматически ссылается на эту папку. Типичным примером является скомпилированный код для пользовательского класса. Вы можете скопировать скомпилированную сборку в папку Bin вашего веб-приложения, чтобы все страницы могли использовать этот класс.
Сборки в папке Bin прописывать не нужно. Пока файл .dll существует в папке Bin, ASP.NET распознает его. Если вы измените файл .dll и запишите его новую версию в папку Bin, ASP.NET обнаружит обновление и будет использовать новую версию файла .dll для последующих запросов новых страниц.
Безопасность папки Bin Размещение скомпилированных сборок в папке Bin представляет угрозу безопасности. Если вы сами написали и скомпилировали код, вы знаете, что он делает. Однако к скомпилированному коду в папке Bin следует относиться как к любому исполняемому коду. Будьте осторожны с скомпилированным кодом до тех пор, пока вы не протестируете его и не будете уверены, что понимаете его функциональность.
Обратите внимание на следующие аспекты безопасности, связанные с тем, следует ли помещать скомпилированный код в папку Bin:
Сборки в папке Bin ограничены текущим приложением. Таким образом, они не могут получить доступ к ресурсам за пределами текущего веб-приложения или вызвать код за пределами текущего веб-приложения.
Во время выполнения уровень доступа к сборке определяется уровнем доверия, указанным на локальном компьютере. Дополнительные сведения см. в разделе Уровни доверия ASP.NET и файлы политик.
Если вы используете такой конструктор, как Visual Studio, код в папке Bin выполняется в другом контексте, чем при его запуске. Например, код может выполняться с полным доверием.
Папка App_Code Вы можете хранить исходный код в папке App_Code, которая будет автоматически скомпилирована во время выполнения. Любой другой код в веб-приложении может получить доступ к полученной сборке. Таким образом, папка App_Code работает во многом аналогично папке Bin, за исключением того, что в ней можно хранить исходный код вместо скомпилированного кода. Папка App_Code и ее особое место в веб-приложениях ASP.NET позволяют создавать собственные классы и другие файлы только с исходным кодом и использовать их в своем веб-приложении без необходимости компилировать их отдельно.
Папка App_Code может содержать файлы исходного кода, написанные в виде традиционных файлов классов (то есть файлы с расширениями .vb, .cs и т. д.). Однако он также может содержать файлы, которые явно не написаны на определенном языке программирования. Примеры включают файлы .wsdl (язык описания веб-служб) и файлы схемы xml (.xsd). ASP.NET может скомпилировать эти файлы в сборки.
Папка App_Code может содержать столько файлов и подпапок, сколько вам нужно. Вы можете организовать свой исходный код любым удобным для вас способом, и ASP.NET все равно скомпилирует весь код в одну сборку, и к этой сборке сможет получить доступ другой код в любом месте веб-приложения.
Уведомление
Пользовательские элементы управления не разрешены в папке App_Code. Сюда входят однофайловые пользовательские элементы управления, а также пользовательские элементы управления, использующие модель кода программной части. Размещение пользовательского элемента управления в каталоге App_Code приводит к тому, что код пользовательского элемента управления компилируется не в требуемом порядке и поэтому не допускается. Обратите внимание, что нет необходимости размещать пользовательские элементы управления в папке App_Code; эти элементы управления уже доступны на страницах в любом месте приложения.
Определите язык программирования папки App_Code.
Папка App_Code явно не помечена как содержащая файлы, написанные на любом языке программирования. Вместо этого ASP.NET определяет, какой компилятор следует вызвать для папки App_Code, на основе содержащихся в ней файлов. Если папка App_Code содержит файлы .vb, ASP.NET использует компилятор Visual Basic; если она содержит файлы .cs, ASP.NET использует компилятор C# и т. д.
Если папка App_Code содержит только файлы, в которых явно не указан язык программирования (например, файлы .wsdl), ASP.NET будет использовать компилятор веб-приложения по умолчанию, который находится в элементе компиляции веб-приложения или файле конфигурации компьютера. Конечно .
Использование нескольких языков программирования в папке App_Code Поскольку исходный код в папке App_Code компилируется в одну сборку, все файлы в папке App_Code должны быть написаны на одном языке программирования. Например, папка App_Code не может содержать исходный код, написанный одновременно на Visual Basic и C#.
Однако вы можете настроить свое веб-приложение так, чтобы подпапки папки App_Code рассматривались как отдельные компилируемые блоки. Таким образом, каждая папка может содержать исходный код, написанный на другом языке программирования. Эту конфигурацию можно указать, создав элемент компиляции в элементе codeSubDirectories файла Web.config, а затем добавив ссылку на подпапку. В следующем примере показано, как настроить подпапки с именами VBCode и CSCode для компиляции в разные сборки:
Скопировать код
<компиляция debug="false">
<добавить каталогName="VBCode" />
<добавить имя_каталога="CSCode" />
Ссылки на подпапки VBCode и CSCode не обязательно должны включать какую-либо информацию о языках программирования, содержащихся в подпапках. Как и в случае с самой папкой App_Code, ASP.NET определяет, какой компилятор следует использовать, на основе файлов в подпапке.
Безопасность папки App_Code
Проблемы безопасности с кодом в папке App_Code в основном такие же, как и проблемы безопасности с кодом в папке Bin — код компилируется в сборку во время выполнения. Что лучше папки Bin, так это то, что вы можете прочитать исходный код файлов в папке App_Code. Однако риски безопасности все равно существуют, если вы не до конца понимаете код. Поэтому к исходному коду в папке App_Code следует относиться с той же осторожностью, что и к скомпилированному коду, созданному из того же исходного кода.
Выдержки из: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx .
-