- Практическое руководство. Добавление файла конфигурации приложения в проект C# How to: Add an application configuration file to a C# project
- Добавление файла конфигурации приложения в проект C# To add an application configuration file to a C# project
- Настройка служб с использованием файлов конфигурации Configuring Services Using Configuration Files
- System.Configuration: Web.config и App.config System.Configuration: Web.config and App.config
- Основные разделы файла конфигурации Major Sections of the Configuration File
- Элемент The Element
- Элемент The Element
- Элемент The Element
- Элемент The Element
- Элемент The Element
- Элемент The Element
- Элемент The Element
- Практическое руководство. Конфигурации привязок и поведения How to Use Binding and Behavior Configurations
- Слияние поведений Behavior Merge
Практическое руководство. Добавление файла конфигурации приложения в проект C# How to: Add an application configuration file to a C# project
Добавив файл конфигурации приложения (файл app.config) в проект C#, вы можете настроить способ, которым общеязыковая среда выполнения будет находить и загружать файлы сборки. By adding an application configuration file (app.config file) to a C# project, you can customize how the common language runtime locates and loads assembly files. Дополнительные сведения о файлах конфигурации приложения см. в статье Обнаружение сборок в среде выполнения (.NET Framework). For more information about application configuration files, see How the runtime locates assemblies (.NET Framework).
Приложения UWP не содержат файл app.config. UWP apps don’t contain an app.config file.
При сборке проекта среда разработки автоматически копирует файл app.config, изменяет имя копии файла в соответствии с исполняемым файлом, а затем перемещает копию в каталог bin. When you build your project, the development environment automatically copies your app.config file, changes the file name of the copy to match your executable, and then moves the copy to the bin directory.
Добавление файла конфигурации приложения в проект C# To add an application configuration file to a C# project
В строке меню выберите Проект > Добавить новый элемент. On the menu bar, choose Project > Add New Item.
Откроется диалоговое окно Добавление нового элемента. The Add New Item dialog box appears.
Разверните пункт Установленные > Элементы Visual C# , а затем выберите шаблон Файл конфигурации приложения. Expand Installed > Visual C# Items, and then choose the Application Configuration File template.
В текстовом поле Имя введите имя и нажмите кнопку Добавить. In the Name text box, enter a name, and then choose the Add button.
Настройка служб с использованием файлов конфигурации Configuring Services Using Configuration Files
Настройка службы Windows Communication Foundation (WCF) с помощью файла конфигурации обеспечивает гибкость предоставления данных о поведении конечных точек и служб в точке развертывания, а не во время разработки. Configuring a Windows Communication Foundation (WCF) service with a configuration file gives you the flexibility of providing endpoint and service behavior data at the point of deployment instead of at design time. В этой теме представлено описание основных доступных методов. This topic outlines the primary techniques available.
Службу WCF можно настроить с помощью технологии настройки .NET Framework. A WCF service is configurable using the .NET Framework configuration technology. Чаще всего XML-элементы добавляются в файл Web.config для сайта службы IIS (IIS), на котором размещена служба WCF. Most commonly, XML elements are added to the Web.config file for an Internet Information Services (IIS) site that hosts a WCF service. Эти элементы позволяют изменять данные, такие как адреса конечных точек (фактические адреса, используемые для взаимодействия со службой), по схеме компьютер-компьютер. The elements allow you to change details such as the endpoint addresses (the actual addresses used to communicate with the service) on a machine-by-machine basis. Кроме того, в состав WCF входит несколько предоставляемых системой элементов, которые позволяют быстро выбрать наиболее простые функции для службы. In addition, WCF includes several system-provided elements that allow you to quickly select the most basic features for a service. Начиная с .NET Framework 4, WCF поставляется с новой моделью конфигурации по умолчанию, которая упрощает требования к конфигурации WCF. Starting with .NET Framework 4, WCF comes with a new default configuration model that simplifies WCF configuration requirements. Если не указать конфигурацию WCF для конкретной службы, среда выполнения автоматически настроит службу с помощью некоторых стандартных конечных точек, а также привязки или поведения по умолчанию. If you do not provide any WCF configuration for a particular service, the runtime automatically configures your service with some standard endpoints and default binding/behavior. На практике написание конфигурации является основной частью программирования приложений WCF. In practice, writing configuration is a major part of programming WCF applications.
Дополнительные сведения см. в разделе Настройка привязок для служб. For more information, see Configuring Bindings for Services. Список наиболее часто используемых элементов см. в разделе привязки, предоставляемые системой. For a list of the most commonly used elements, see System-Provided Bindings. Дополнительные сведения о конечных точках по умолчанию, привязках и режимах работы см. в разделах Упрощенная конфигурация и Упрощенная конфигурация служб WCF. For more information about default endpoints, bindings, and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.
При развертывании сценариев параллельного выполнения, в которых развернуты две различные версии службы, необходимо указывать частичные имена сборок, на которые ссылаются файлы конфигурации. When deploying side by side scenarios where two different versions of a service are deployed, it is necessary to specify partial names of assemblies referenced in configuration files. Это связано с тем, что файл конфигурации совместно используется всеми версиями службы, которые могут выполняться под управлением различных версий платформы .NET Framework. This is because the configuration file is shared across all versions of a service and they could be running under different versions of the .NET Framework.
System.Configuration: Web.config и App.config System.Configuration: Web.config and App.config
WCF использует систему конфигурации System.Configфигурации в .NET Framework. WCF uses the System.Configuration configuration system of the .NET Framework.
При настройке службы в Visual Studio используйте либо файл Web.config, либо файл App.config, чтобы указать параметры. When configuring a service in Visual Studio, use either a Web.config file or an App.config file to specify the settings. Выбор имени файла конфигурации определяется выбранной для службы средой размещения. The choice of the configuration file name is determined by the hosting environment you choose for the service. Если служба размещается с помощью IIS, используйте файл Web.config. If you are using IIS to host your service, use a Web.config file. Если служба размещается с помощью другой среды размещения, используйте файл App.config. If you are using any other hosting environment, use an App.config file.
В Visual Studio файл с именем App.config используется для создания окончательного файла конфигурации. In Visual Studio, the file named App.config is used to create the final configuration file. Окончательное имя, которое фактически используется для конфигурации, зависит от имени сборки. The final name actually used for the configuration depends on the assembly name. Например, сборка с именем «Cohowinery.exe» имеет имя окончательного файла конфигурации «Cohowinery.exe.config». For example, an assembly named «Cohowinery.exe» has a final configuration file name of «Cohowinery.exe.config». Однако следует изменить только файл App.config. However, you only need to modify the App.config file. Изменения, внесенные в это файл, автоматически вносятся в окончательный файл конфигурации приложения во время компиляции. Changes made to that file are automatically made to the final application configuration file at compile time.
При использовании файла App.config система конфигурации объединяет файл App.config с содержимым файла Machine.config, когда запускается приложение и применяется конфигурация. In using an App.config, file the configuration system merges the App.config file with content of the Machine.config file when the application starts and the configuration is applied. Этот механизм позволяет определить параметры в рамках всего компьютера в файле Machine.config. This mechanism allows machine-wide settings to be defined in the Machine.config file. Файл App.config можно использовать для переопределения параметров файла Machine.config. Также предусмотрена возможность блокировки в параметрах файла Machine.config согласно привычной работе. The App.config file can be used to override the settings of the Machine.config file; you can also lock in the settings in Machine.config file so that they get used. Если используется файл конфигурации Web.config, то система объединяет файлы Web.config во всех родительских каталогах вплоть до каталога приложения в применяемой конфигурации. In the Web.config case, the configuration system merges the Web.config files in all directories leading up to the application directory into the configuration that gets applied. Дополнительные сведения о конфигурации и параметрах приоритетов см. в разделе разделы в System.Configuration пространстве имен. For more information about configuration and the setting priorities, see topics in the System.Configuration namespace.
Основные разделы файла конфигурации Major Sections of the Configuration File
Основные разделы файла конфигурации включают в себя следующие элементы. The main sections in the configuration file include the following elements.
Разделы привязок и поведения являются необязательными и указываются только при необходимости. The bindings and behaviors sections are optional and are only included if required.
Элемент The Element
Элемент services содержит спецификации для всех служб, которые размещает приложение. The services element contains the specifications for all services the application hosts. Начиная с упрощенной модели конфигурации в .NET Framework 4, этот раздел является необязательным. Starting with the simplified configuration model in .NET Framework 4, this section is optional.
Элемент The Element
Каждая служба имеет следующие атрибуты: Each service has these attributes:
name . name . Определяет тип, обеспечивающий реализацию контракта службы. Specifies the type that provides an implementation of a service contract. Это полное имя, состоящее из пространства имен, точки и имени типа, This is a fully qualified name which consists of the namespace, a period, and then the type name. Например, «MyNameSpace.myServiceType» . For example «MyNameSpace.myServiceType» .
behaviorConfiguration . behaviorConfiguration . Задает имя одного из элементов behavior , найденных в behaviors . Specifies the name of one of the behavior elements found in the behaviors element. Заданное поведение управляет действиями, например, разрешает ли служба олицетворение. The specified behavior governs actions such as whether the service allows impersonation. Если значением является пустое имя, или объект behaviorConfiguration не указан, то в службу добавляется набор поведений службы по умолчанию. If its value is the empty name or no behaviorConfiguration is provided then the default set of service behaviors is added to the service.
Элемент The Element
Для каждой конечной точки требуется адрес, привязка и контракт, представленные следующими атрибутами: Each endpoint requires an address, a binding, and a contract, which are represented by the following attributes:
address . address . Задает универсальный код ресурса (URI) службы, который может быть абсолютным адресом или адресом, указанным относительно базового адреса службы. Specifies the service’s Uniform Resource Identifier (URI), which can be an absolute address or one that is given relative to the base address of the service. Если задана пустая строка, это означает, что конечная точка доступна по базовому адресу, который указывается при создании ServiceHost для службы. If set to an empty string, it indicates that the endpoint is available at the base address that is specified when creating the ServiceHost for the service.
binding . binding . Как правило, задает предоставляемую системой привязку типа WSHttpBinding, но также может задавать определяемую пользователем привязку. Typically specifies a system-provided binding like WSHttpBinding, but can also specify a user-defined binding. Заданная привязка определяет используемый тип транспорта, безопасности и кодирования, а также поддерживаются ли или включены ли надежные сеансы, транзакции или потоковая передача. The binding specified determines the type of transport, security and encoding used, and whether reliable sessions, transactions, or streaming is supported or enabled.
bindingConfiguration . bindingConfiguration . Если требуется изменить значения привязки по умолчанию, можно настроить соответствующий элемент binding в элементе bindings . If the default values of a binding must be modified, this can be done by configuring the appropriate binding element in the bindings element. Этому атрибуту должно быть присвоено то же значение, что и атрибуту name элемента binding , который используется для изменения значений по умолчанию. This attribute should be given the same value as the name attribute of the binding element that is used to change the defaults. Если имя не задано, или в привязке не задан объект bindingConfiguration , то в конечной точке используется привязка по умолчанию типа привязки. If no name is given, or no bindingConfiguration is specified in the binding, then the default binding of the binding type is used in the endpoint.
contract . contract . Задает интерфейс, определяющий контракт. Specifies the interface that defines the contract. Это интерфейс, реализованный в типе CLR, который задан атрибутом name элемента service . This is the interface implemented in the common language runtime (CLR) type specified by the name attribute of the service element.
Элемент The Element
Элемент bindings содержит спецификации для всех привязок, которые могут использоваться любой конечной точкой, заданной в любой службе. The bindings element contains the specifications for all bindings that can be used by any endpoint defined in any service.
Элемент The Element
Элемент binding , содержащиеся в элементе bindings , могут являться одной из предоставленных системой привязок (см. раздел System-Provided Bindings) или пользовательской привязкой (см. раздел Custom Bindings). The binding elements contained in the bindings element can be either one of the system-provided bindings (see System-Provided Bindings) or a custom binding (see Custom Bindings). Элемент binding имеет атрибут name , сопоставляющий привязку с конечной точкой, заданной в атрибуте bindingConfiguration элемента endpoint . The binding element has a name attribute that correlates the binding with the endpoint specified in the bindingConfiguration attribute of the endpoint element. Если имя не указано, то привязка будет соответствовать значению по умолчанию для этого типа привязки. If no name is specified then that binding corresponds to the default of that binding type.
Дополнительные сведения о настройке служб и клиентов см. в разделе Настройка служб WCF. For more information about configuring services and clients, see Configuring WCF services.
Элемент The Element
Это элемент контейнера для элементов behavior , задающих поведение службы. This is a container element for the behavior elements that define the behaviors for a service.
Элемент The Element
Каждый behavior элемент определяется name атрибутом и предоставляет либо предоставляемое системой поведение, например throttling >, либо пользовательское поведение. Each behavior element is identified by a name attribute and provides either a system-provided behavior, such as throttling >, or a custom behavior. Если имя не задано, то элемент behavior будет соответствовать поведению по умолчанию для службы или конечной точки. If no name is given then that behavior element corresponds to the default service or endpoint behavior.
Практическое руководство. Конфигурации привязок и поведения How to Use Binding and Behavior Configurations
WCF упрощает совместное использование конфигураций между конечными точками с помощью эталонной системы в конфигурации. WCF makes it easy to share configurations between endpoints using a reference system in configuration. Вместо того, чтобы непосредственно назначать значения конфигурации для конечной точки, значения конфигурации, относящиеся к привязке, группируются в элементах bindingConfiguration в разделе . Rather than directly assigning configuration values to an endpoint, binding-related configuration values are grouped in bindingConfiguration elements in the section. Конфигурация привязок представляет собой именованную группу параметров привязки. A binding configuration is a named group of settings on a binding. Конечные точки могут ссылаться на bindingConfiguration по имени. Endpoints can then reference the bindingConfiguration by name.
name для bindingConfiguration задано в элементе . The name of the bindingConfiguration is set in the element. name Должна быть уникальной строкой в области действия типа привязки — в данном случае <> BasicHttpBindingили пустое значение для ссылки на привязку по умолчанию. The name must be a unique string within the scope of the binding type—in this case the , or an empty value to refer to the default binding. Конечная точка содержит ссылки на конфигурацию, задавая для этой строки атрибут bindingConfiguration . The endpoint links to the configuration by setting the bindingConfiguration attribute to this string.
behaviorConfiguration реализуется аналогичным образом, как показано в следующем примере. A behaviorConfiguration is implemented the same way, as illustrated in the following sample.
Заметьте, что в службу добавляет по умолчанию набор поведений службы. Note that the default set of service behaviors are added to the service. Эта система обеспечивает для конечных точек совместные общие конфигурации, не переопределяя параметры. This system allows endpoints to share common configurations without redefining the settings. Если требуется область на уровне компьютера, создайте конфигурацию привязки или поведения в файле Machine.config. Параметры конфигурации указаны во всех файлах App.config. If machine-wide scope is required, create the binding or behavior configuration in Machine.config. The configuration settings are available in all App.config files. Configuration Editor Tool (SvcConfigEditor.exe) упрощает создание конфигураций. The Configuration Editor Tool (SvcConfigEditor.exe) makes it easy to create configurations.
Слияние поведений Behavior Merge
Функция слияния поведений упрощает управление поведениями в ситуациях, когда должен постоянно использоваться набор общих поведений. The behavior merge feature makes it easier to manage behaviors when you want a set of common behaviors to be used consistently. Эта функция позволяет задавать поведения на разных уровнях иерархии конфигурации, а также настраивать наследование службами поведений от нескольких уровней иерархии конфигурации. This feature allows you to specify behaviors at different levels of the configuration hierarchy and have services inherit behaviors from multiple levels of the configuration hierarchy. Проиллюстрируем это следующим образом: предположим, что в IIS имеется следующая структура виртуальных каталогов: To illustrate how this works assume you have the following virtual directory layout in IIS:
\Web.config Файл содержит следующее содержимое: And your
\Web.config file has the following contents:
Кроме того, имеется дочерний файл Web.config, расположенный в папке
\Child\Web.config, со следующим содержимым: And you have a child Web.config located at
\Child\Web.config with the following contents:
Служба, расположенная в
\Child\Service.svc, будет действовать таким образом, как будто бы для нее заданы и поведение serviceDebug, и поведение serviceMetadata. The service located at
\Child\Service.svc will behave as though it has both the serviceDebug and serviceMetadata behaviors. У службы, расположенной в
\Service.svc, будет присутствовать только поведение serviceDebug behavior. The service located at
\Service.svc will only have the serviceDebug behavior. В этой ситуации две коллекции поведений с одним и тем же именем (в данном случае пустой строкой) объединяются. What happens is that the two behavior collections with the same name (in this case the empty string) are merged.
Можно также очистить коллекции поведения с помощью тега и удалить отдельные поведения из коллекции с помощью тега. You can also clear behavior collections by using the tag and removed individual behaviors from the collection by using the tag. Например, действие следующих двух конфигураций приведет к тому, что в дочерней службе будет только поведение serviceMetadata: For example, the following two configuration results in the child service having only the serviceMetadata behavior:
Слияние поведений проводится для безымянных коллекций поведений (как показано выше), а также для именованных коллекций поведений. Behavior merge is done for nameless behavior collections as shown above and named behavior collections as well.
Слияние поведения работает в среде размещения IIS, в которой Web.config файлы объединяются иерархически с корневым Web.configным файлом и machine.config. Но он также работает в среде приложения, где machine.config может объединяться с App.configным файлом. Behavior merge works in the IIS hosting environment, in which Web.config files merge hierarchically with the root Web.config file and machine.config. But it also works in the application environment, where machine.config can merge with the App.config file.
Слияние поведений применяется в конфигурациях как к поведениям конечных точек, так и к поведениям служб. Behavior merge applies to both endpoint behaviors and service behaviors in configuration.
Если коллекция дочерних поведений содержит поведение, которое уже определено в коллекции родительских поведений, то дочернее поведение переопределяет родительское. If a child behavior collection contains a behavior that’s already present in the parent behavior collection, the child behavior overrides the parent. Таким образом, если в родительской коллекции поведения существовала и Дочерняя коллекция поведений существовала , дочернее поведение будет переопределять родительское поведение в коллекции поведения, а хттпжетенаблед — «true». So if a parent behavior collection had and a child behavior collection had , the child behavior would override the parent behavior in the behavior collection and httpGetEnabled would be «true».