Использование элемента <cryptoNameMapping>
Элемент <cryptoNameMapping> задает соответствия между классами безопасности и их дружественными именами. Он содержит два элемента – <cryptoClasses> и <nameEntry>.
Использование элемента <cryptoClasses>. Элемент <cryptoClasses> содержит список классов криптографии, которые будут иметь соответствующие им дружественные имена, объявленные с помощью элемента <nameEntry>. Элемент, используемый для создания ссылки на класс криптографии, называется <cryptoClass>. Ниже приведен его синтаксис.
<cryptoNameMapping> <cryptoClasses> <cryptoClass CryptoName="CryptoClass, AssemblyName" /> </cryptoClasses> </cryptoNameMapping>
Ниже показан пример элемента <cryptoClass>, использованного для объявления нового класса.
<cryptoNameMapping> <cryptoClasses> <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly Culture=neutral, PublicKeyToken=b77a5c561934e089, Version=1.0.0.0" /> </cryptoClasses> </cryptoNameMapping>
Для завершения создания соответствия имени можно использовать элемент <nameEntry>.
Использование элемента <nameEntry>. Элемент <nameEntry> ставит в соответствие классу, объявленному вами в разделе <cryptoClasses>, дружественное имя. Ниже приведен его синтаксис.
<cryptoNameMapping> <nameEntry name="friendly name" class="Crypto Class Name" /> </cryptoNameMapping>
В таблице 7.1 содержится перечень свойств элемента <nameEntry>.
name | Дружественное имя, используемое для создания экземпляра данного класса. |
class | Имя класса, указанное в элементе <cryptoClass>. |
Ниже приведен пример использования элемента <nameEntry> со связанным элементом <cryptoClass>.
<cryptographySettings> <cryptoNameMapping> <cryptoClasses> <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly Culture=neutral, PublicKeyToken=b77a5c561934e089, Version=1.0.0.0" /> </cryptoClasses> <nameEntry name="RSA" class="CustomRSA" /> </cryptoNameMapping> </cryptographySettings>
Создав такое соответствие, вы можете получить доступ к классу криптографии с помощью метода System.Security.CryptoConfig.CreateFromName. Просто передайте в метод CreateFromName имя класса, указанное в <nameEntry>. Чтобы создать экземпляр класса, объявленного в предыдущем примере, используйте System.Security.CryptoConfig.CreateFromName("RSA").
Использование элемента <developmentMode>
Элемент <developmentMode> указывает среде выполнения производить поиск сборок в директориях, заданных в переменной среды окружения DEVPATH. Ниже приведен синтаксис этого элемента.
<developmentMode developerInstallation="true | false" />
В таблице 7.3 содержится свойство этого элемента.
developerInstallation | Определяет, будет ли среда выполнения искать сборки в переменной среды окружения DEVPATH.
true Среда выполнения использует этот путь. false Среда выполнения не использует этот путь. |
Ниже приведен пример этого элемента.
<runtime> <developmentMode developerInstallation="true" /> </runtime>
В примере задается указание среде выполнения производить поиск сборок в директориях, указанных в переменной среды окружения DEVPATH. Среда выполнения не смотрит на информацию о версии; она использует первую найденную сборку.
Использование элемента <gcConcurrent>
Элемент <gcConcurrent> определяет, будет ли среда выполнения CLR запускать сборщик мусора в текущем потоке выполнения или в отдельном потоке. Ниже приведен синтаксис этого элемента.
<runtime> <gcConcurrent enabled="true | false" /> </runtime>
В таблице 7.11 содержится свойство этого элемента.
enabled | Определяет запуск сборщика мусора в одном потоке с приложением.
true Сборщик мусора запускается в одном потоке с приложением. false Сборщик мусора запускается в отдельном потоке выполнения. |
Ниже приведен пример этого элемента.
<runtime> <gcConcurrent enabled="false" /> </runtime>
В примере устанавливается, что сборщик мусора запускается в отдельном от вашего приложения потоке.
Использование элемента <oidMap>
Элемент <oidMap> создает соответствия идентификаторов объектов OID или ASN.1 и классов. Идентификаторы объектов ASN.1 определяют алгоритм для некоторых криптографических форматов. Этот элемент включает один субэлемент – <oidEntry>.
Использование элемента <oidEntry>. Элемент <oidEntry> создает соответствие между числом OID и именем класса, указанным в элементе <nameEntry>. Ниже приведен его синтаксис.
<cryptographySettings> <oidMap> <oidEntry OID="OID Value" name="Class Name" /> </oidMap> </cryptographySettings>
В таблице 7.2 содержится перечень свойств элемента <oidEntry>.
OID | Определяет ASN.1 OID для алгоритма, реализованного вашим классом. |
name | Определяет имя класса, указанное в элементе <nameEntry>. |
Ниже приведен пример элемента, использованного для создания соответствия между OID и классом, объявленным в элементе <nameEntry>.
<cryptographySettings> <cryptoNameMapping> <cryptoClasses> <cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly Culture=neutral, PublicKeyToken= b77a5c561934e089, Version=1.0.0.0" /> </cryptoClasses> <nameEntry name="RSA" class="CustomRSA" /> </cryptoNameMapping> <oidMap> <oidEntry OID="1.3.14.33.42.46" name="RSA" /> </oidMap> </cryptographySettings>
Теперь OID будет ассоциирован с классом, объявленным в этом примере.
Использование элемента <probing>
Элемент <probing> - это субэлемент элемента <assemblyBinding>. В элементе <probing> можно указать несколько поддиректорий, в которых будет производиться поиск сборок при их загрузке. Ниже приведен синтаксис этого элемента.
<runtime> <assemblyBinding> <probing privatePath="sub directories" /> </assemblyBinding> </runtime>
Свойства элемента <probing> приведены в табл. 7.9.
privatePath | Определяет список директорий, разделенных точкой с запятой, в которых среда выполнения производит поиск. |
Ниже приведен пример элемента <probing>.
<runtime> <assemblyBinding> <probing privatePath="bin;bin\netmail;bin2" /> </assemblyBinding> </runtime>
Здесь среда выполнения включит в поиск сборок директории bin, bin\netmail и bin2.
Использование элемента <publisherPolicy>
В дополнение к использованию элемента <publisherPolicy> в элементе <dependentAssembly> можно использовать элемент <publisherPolicy> как субэлемент <assemblyBinding>. При использовании его в качестве субэлемента <assemblyBinding> элемент <publisherPolicy> применяется ко всем сборкам, а не только к одному приложению. Синтаксис и атрибуты элемента <publisherPolicy> аналогичны таковым субэлемента в элементе <dependentAssembly>.
Использование элемента <qualifyAssembly>
Элемент <qualifyAssembly> задает соответствие между частичными именами сборок и их полными именами. Ниже приведен синтаксис этого элемента.
<runtime> <assemblyBinding> <qualifyAssembly partialName="partial name' fullName="full name' /> </assemblyBinding> </runtime>
Свойства этого элемента приведены в табл. 7.10.
partialName | Определяет частичное имя сборки. |
fullName | Определяет полное имя сборки, находящейся в глобальном кэше сборок. |
Ниже приведен пример этого элемента.
<runtime> <assemblyBinding> <qualifyAssembly partialName="netmail" fullName="netmail, version 2.0.0.0, publickeyToken=a1690a5ea44bab32, culture=neutral" /> </assemblyBinding> </runtime>
Теперь, при обращении к сборке netmail приложение будет перенаправляться на имя этой сборки в глобальном кэше сборок.
Использование элемента <requiredRuntime>
Элемент <requiredRuntime> определяет версию .NET Framework для запуска данного приложения. Он используется только приложениями, созданными посредством.NET Framework версии 1.0. Ниже приведен синтаксис этого элемента.
<startup> <requiredRuntime version="framework version" safemode="true | false" /> </startup>
Свойства элемента <requiredRuntime> перечислены в табл. 7.12.
version | Определяет версию .NET Framework, которая требуется для приложения. Значение должно в точности соответствовать имени директории, в которой находится .NET Framework. | |
safemode | Определяет, будет ли приложение работать в "безопасном" режиме. При запуске приложения в безопасном режиме оно не проверяет в реестре версию среды выполнения.
true Приложение работает в безопасном режиме. false Приложение не работает в безопасном режиме. |
Ниже приведен пример этого элемента.
<startup> <requiredRuntime version="v1.0.3705" safemode="false" /> </startup>
Здесь задается использование приложением только версии 1.0 среды .NET Framework, а также запрещается выполнение в безопасном режиме, позволяя приложению обратиться за информацией о версии к реестру.
Использование элемента <supportedRuntime>
Элемент <supportedRuntime> определяет версию .NET Framework, которая будет поддерживаться приложением. Этот элемент работает с приложениями, созданными с использованием .NET Framework версии 1.1. Ниже приведен синтаксис этого элемента.
<startup> <supportedRuntime version="version number" /> </startup>
В таблице 7.13 содержится свойство элемента <supportedRuntime>.
version | Определяет версию .NET Framework, которая поддерживается приложением. Значение должно в точности соответствовать имени директории .NET Framework. |
Ниже приведен пример этого элемента.
<startup> <supportedRuntime version="v1.0.3705" /> <supportedRuntime version="v1.1.4122" /> </startup>
Здесь указывается, что приложение поддерживает обе версии .NET Framework – версию 1.0 и версию 1.1.
Использование раздела <assemblyBinding>
Раздел <assemblyBinding> содержит несколько подразделов и атрибутов. Вы можете использовать этот раздел для указания перенаправлений версий сборок и расположения других сборок. Сначала приведем описание атрибутов раздела <assemblyBinding>, а затем перейдем к субэлементам. Ниже приведен синтаксис этого раздела.
<assemblyBinding xmlns="xml namespace" appliesTo="framework version" />
В таблице 7.4 содержится перечень свойств этого раздела.
xmlns | Определяет пространство имен XML, которое требуется для привязки сборки. |
appliesTo | Определяет версию .NET Framework, к которой применяется перенаправление данной сборки. Атрибут был добавлен в версии 1.1 и игнорируется версией 1.0. |
Ниже показан пример того, как следует использовать свойства этого раздела.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v1.0.3705" />
Здесь ограничивается перенаправление сборки только теми приложениями, которые выполняются в .NET Framework версии 1.0.
Элемент <assemblyBinding> содержит несколько субэлементов, с которыми вы познакомитесь дальше.
Использование раздела <cryptographySettings>
Подраздел содержит два элемента, которые создают соответствия для криптографии и соответствия OID – <cryptoNameMapping> и <oidMap>.
Использование раздела <dependentAssembly>
Элемент <dependentAssembly> содержит все спецификации для каждой сборки, которую нужно перенаправить. Он включает информацию об идентификации, месте расположения, список перенаправляемых версий и тому подобное. Этот элемент не имеет атрибутов, но содержит несколько субэлементов.
Использование элемента <assemblyIdentity>. Элемент <assemblyIdentity> содержит информацию о сборке, включая имя сборки, последовательность открытого ключа и культуру. Каждый элемент <dependentAssembly> должен содержать элемент <assemblyIdentity>. Ниже приведен синтаксис этого элемента.
<dependentAssembly> <assemblyIdentity name="assembly name" publicKeyToken= "assembly public key token" culture="assembly culture " /> </dependentAssembly>
В таблице 7.5 содержится перечень свойств этого элемента.
name | Определяет имя сборки и является обязательным. |
publicKeyToken | Определяет последовательность открытого ключа, который входит строгим именем сборки. |
culture | Определяет страну или регион сборки (обычно равно neutral). |
Ниже приведен пример этого элемента.
<dependentAssembly> <assemblyIdentity name="netMail" publicKeyToken="a1690a5ea44bab32" culture="neutral" /> </dependentAssembly>
Использование элемента <codeBase>. Элемент <codeBase> указывает среде выполнения CLR, где искать сборку. Ниже приведен синтаксис этого элемента.
<dependentAssembly> <codeBase version="assembly version" href="url location of assembly" /> </dependentAssembly>
В таблице 7.6 содержится перечень свойств элемента <codeBase>.
version | Определяет версию сборки, к которой применяется данный элемент. |
href | Определяет расположение сборки. |
Ниже приведен пример этого элемента.
<dependentAssembly> <assemblyIdentity name="netMail" publicKeyToken="a1690a5ea44bab32" culture="neutral" /> <codeBase version="1.0.0.0" href="http://www.microsoft.com/netmail.dll" /> </dependentAssembly>
Использование элемента <bindingRedirect>. Элемент <bindingRedirect> перенаправляет одну версию сборки на другую. Ниже приведен синтаксис этого элемента.
<dependentAssembly> <bindingRedirect oldVersion="old assembly version" newVersion="new assembly version" /> </dependentAssembly>
В таблице 7.7 содержится перечень свойств элемента <bindingRedirect>.
oldVersion | Определяет версию сборки, которая будет перенаправлена. Можно также ввести диапазон номеров версий (1.0.0.0 – 2.0.0.1). |
newVersion | Определяет версию сборки, на которую будет перенаправлен запрос. |
<dependentAssembly> <assemblyIdentity name="netMail" publicKeyToken="a1690a5ea44bab32" culture="neutral" /> <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly>
Ключевые моменты
Раздел <mscorlib> предоставляет разделы и элементы, которые создают соответствия между дружественными именами и OID и классами криптографии.Раздел <runtime> содержит параметры для настройки сборок, используемых вместе с приложением.Элемент <gcConcurrent> определяет запуск сборщика мусора в том же потоке выполнения, что и приложение, или в отдельном потоке. Раздел <startup> определяет версию .NET Framework для запуска приложения.
Работа с разделом <mscorlib>
Раздел <mscorlib> содержит параметры для настройки некоторых криптографических возможностей Microsoft .NET Framework. Используемые элементы расположены в подразделе <cryptographySettings>.
Работа с разделом <runtime>
Раздел <runtime> содержит несколько элементов и параметров, которые настраивают работу общей среды выполнения. Он включает параметры сборщика мусора, а также параметры для определения используемой версии сборки. Хотя этот раздел не часто используется в коде ASP.NET, вам следует познакомиться с его опциями.
Работа с разделом <startup>
Данный раздел настроечного файла определяет версию среды выполнения CLR, используемую при запуске приложения.