# Описание ключей web.config

| Что определяет | Ключ или тег | Описание и примеры |
| --- | --- | --- |
| Конфигурация | <configSections\> <section name\="dataConfiguration" type\="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=6.0.0.0, Culture=neutral" requirePermission\="true" /> </configSections\> | |
| Соединение с БД | < connectionStrings configSource\="\_localConfig\\localConnectionStrings.config" /> | |
| Имперсонирование пользователя | impersonate | Для работы в режиме однократной синхронизации почтового клиента необходимо, чтобы была включена Windows-авторизация, а также режим имперсонирования: <identity impersonate\="true" /> |
| Ключ фермы | machineKey | Требуется для SingleSignOn между серверами "Первой Формы" и/или приложениями (например, "Первой Формой" и Личным кабинетом). <machineKey validationKey\="xxx" decryptionKey="xxx" validation="SHA1" decryption\="AES" /> |
| Настройки авторизации | authentication | Аутентификация Windows (Active Directory): <authentication mode\="Windows"/> Аутентификация Forms (через БД сайта) Начиная с версии 2.184: тега authentication быть не должно. См. [Настройка аутентификации по токенам](https://help.1forma.ru/maintenance_guide/maintenance/security/token_auth.md). До версии 2.184: <authentication mode\="Forms"> <forms name\="TaskCenterAndCZAuth" loginUrl\="Login.aspx" slidingExpiration\="true" timeout\="25" protection\="All" path\="/" domain\="1forma.ru"> </forms\> </authentication\> |
| Редирект для разных доменных имен | SetCookieForUpperLevelDomain | Ключ SetCookieForUpperLevelDomain определяет, для какого домена будет задана cookie 1FormaAuth — для домена верхнего уровня (значение true) либо для полного доменного имени (false). <add key\="SetCookieForUpperLevelDomain" value\="true"/> Если ключ не указан в приложении, то по умолчанию считается, что для cookie задается полный домен. Имеет смысл, если настроены несколько серверов, например, https://win.myDomain.ru и https://forms.myDomain.ru. См. [Настройка аутентификации по токенам](https://help.1forma.ru/maintenance_guide/maintenance/security/token_auth.md). |
| Настройка сессии | sessionState | По умолчанию <sessionState mode\="Off" /> (все остальные атрибуты у sessionState можно удалить) Но если в приложении развернут модуль опросов, то <sessionState mode\="InProc" /> |
| Отдача контейнеров мобильных приложений, а также вызов отчетов FastReport из контекста задачи | TaskCenter.iOSClientServices.API | В зависимости от используемого протокола для корректной отдачи контейнеров мобильного приложения в файле web.config необходимо выставить соответствующий параметр в секции <service name \= "TaskCenter.iOSClientServices.API"> Если передача ведется по протоколу https: <service name\="TaskCenter.iOSClientServices.API"> <endpoint address\="" behaviorConfiguration\="TaskCenter.iOSClientServices.APIAspNetAjaxBehavior" binding\="webHttpBinding" bindingConfiguration\="secureHttpBinding" contract\="TaskCenter.iOSClientServices.API" /> </service\> Если передача ведется по протоколу http, то параметр bindingConfiguration="secureHttpBinding" не нужен, и строка имеет вид: <service name\="TaskCenter.iOSClientServices.API"> <endpoint address\="" behaviorConfiguration\="TaskCenter.iOSClientServices.APIAspNetAjaxBehavior" binding\="webHttpBinding" contract\="TaskCenter.iOSClientServices.API" /> </service\> |
| Путь к Swagger для тестирования API | ApplicationPath | В секции <appSettings> можно указать путь к Swagger: <add key="ApplicationPath" value="https://адрес-приложения-1Форма" /> В этом случае обращение к Swagger будет идти по адресу: https://адрес-приложения-1Форма/swagger/ui/index/ Если ключ не указан, то адрес будет браться из параметра "Путь к приложению" в Общих настройках приложения. |
| Сервер заданий по таймеру | IsJobServer | Чтобы на сервере запускались задания по таймеру, в секции <appSettings> должен быть ключ <add key\="IsJobServer" value\="true"/> Тогда при старте приложения будет запускаться механизм джобов. Если ключ IsJobServer не указан, то задания будут запускаться на сервере с ключем IsMainServer |
| Задания по удалению неиспользуемых файлов | EnableRemovalOfUnusedFiles RemovePreparedFileStorageFilesJob | Чтобы работали задания по таймеру, отвечающие за удаление неиспользуемых файлов, в секции <appSettings> должен быть ключ <add key\="EnableRemovalOfUnusedFiles" value\="true"/> Чтобы ограничить время выполнения самого длительного задания (RemovePreparedFileStorageFilesJob), можно указать максимальное число файлов, которое оно может обработать за один запуск: <add key\="RemovalOfUnusedFilesBatchCount" value\="300000"/> где 300 000 — это максимальное число файлов. | ℹ️ Если тестовый сервер использует рабочие ("боевые") файловые провайдеры, то включать данный ключ в web.config на тестовом сервере не рекомендуется. В противном случае файлы, удаленные в тестовом приложении в процессе тестирования, будут удалены также и в рабочем приложении.
 |
| Создание задач для календарных встреч из Exchange (при включенной синхронизации) | CreateTasksForAppointments | Если календарная встреча создается в "Первой Форме", создается задача в календарной категории и запись в таблице Appointments. Если календарная встреча создается в Exchange, то в "Первой Форме" создается запись в таблице Appointments, а соответствующая задача в системной календарной категории может создаваться или не создаваться. Будет ли создаваться такая задача, определяет ключ CreateTasksForAppointments – если он имеет значение false, задача в системном календаре не создается, если true — создается. По умолчанию задача в "Первой Форме" создается, но чтобы ускорить синхронизацию, этот режим можно отключить. <appSettings\> <add key\="CreateTasksForAppointments" value\="false" /> </appSettings\> |
| Доступность прямой работы с SQL из интерфейса администрирования | disableSQLShell | В интерфейсе администрирования "Первой Формы" можно включить возможность работы напрямую с SQL. Это определяет ключ disableSQLShell: Если ключ имеет значение true, то в разделе Интерфейс недоступен пункт Выполнить SQL-запрос, а в редакторе смарт-выражений не отображается кнопка В TSQL. При попытке отредактировать хранимую процедуру будет возникать ошибка 403. <appSettings\> <add key\="disableSQLShell" value\="true" /> </appSettings\> По умолчанию возможность работать с SQL напрямую из интерфейса системы отключена. |
| Генерация app-settings при старте приложения | DisableAppSettingsCreation | Обеспечивает возможность отключить генерацию app-settings при старте приложения. Доступно только для версии 2.260 Пегас. <appSettings\> <add key\="DisableAppSettingsCreation" value\="true" /> </appSettings\> |
| Минимальная продолжительность активной сессии в минутах для конкурентной лицензии | ConcurrentSessionMinLengthInMinutes | После авторизации в системе пользователь попадает в список активных сессий. Время сессии по умолчанию — 1 минута, обновляется и увеличивается с активностью пользователя. После отсутствия активности в системе конкурентная лицензия высвобождается. В ключе ConcurrentSessionMinLengthInMinutes можно задать время активной сессии: <add key\="ConcurrentSessionMinLengthInMinutes" value\="1" /> Проверка конкурентного доступа происходит при каждом веб-запросе. Чем больше значение указано в ключе, тем больше времени понадобится для освобождения лицензии при закрытой вкладке. В то же время, чем меньше значение указано, тем быстрее происходит распределение сессий. Если в запросе приходит признак, что вкладка неактивна, конкурентный доступ не проверяется, и сессия не продлевается — соответственно, другой пользователь может занять лицензию. Для оптимизации используется кеш ConcurrentSessionsExpirationCache. Если в кеше ConcurrentSessionsExpirationCache есть дата Expires, и она еще не наступила, проверка лицензии будет пропущена. Если дата Expires наступила, запрашивается конкурентный доступ: если есть свободная сессия, пользователь продолжает работу. В кеш кладется значение Expires выданной сессии из колонки dbo.UserSessions.Expires. |
| Режим аутентификации в ActiveDirectory | ActiveDirectoryAuthenticationMode | Для аутентификации через ActiveDirectory в секции appSettings может быть установлен ключ ActiveDirectoryAuthenticationMode. Возможные значения: DirectoryServices, ldap, PrincipalContext. Значение по умолчанию — ldap , DirectoryServices — библиотека "system.directoryservices" (только для AD). , PrincipalContext — "System.DirectoryServices.AccountManagement", более высокоуровневая библиотека (только для AD). Необходимо выбрать значением для ActiveDirectoryAuthenticationMode, если в лесе ActiveDirectory используются одноименные учетные записи. , ldap — "Novell.Directory.Ldap" — библиотека, работающая по протоколу LDAP. Работает как с AD, так и для других LDAP-серверов (к примеру, OpenLDAP). |
| Обновление кэшей через БД | ApplicationInstanceId | Для задания имени инстанса в секции appSettings необходим ключ ApplicationInstanceId. Его значение (имя инстанса) должно быть уникальным для каждого инстанса приложения. <add key\="ApplicationInstanceId" value\="web\_1901" /> | ℹ️ В тексте значения ключа недопустимо использование символа "-" (дефис), при необходимости его следует заменить на "\_" (нижнее подчеркивание)
 |
| Сигнализация для обновления кешей через БД | MessageBus UseSqlServerBus | Ключ MessageBus определяет очередь сообщений. Возможные значения: None, Redis (устаревшее), RebusSQL (по умолчанию). При старте приложения "Первая Форма" соответствующая очередь сообщений Rebus очищается. Чтобы работала сигнализация для обновления кешей, в секции appSettings ключ UseSqlServerBus должен быть установлен в значение true. Чтобы выключить Rebus, значение UseSqlServerBus должно быть явно задано как false |
| Быстрая регистрация модулей приложения | ExperimentalEnableOptimizedRegistration | Для быстрой регистрации модулей при старте приложения в секции appSettings ключ ExperimentalEnableOptimizedRegistration должен быть установлен в значение true. | ℹ️ По умолчанию выключен, не рекомендуется к использованию
 |
| Обновление пользовательского кеша по сигналу от мастер-сервера | InvalidateUsersCacheByEvent | Чтобы включить обновление UsersCache по сигналу от мастер сервера, в секции appSettings ключ InvalidateUsersCacheByEvent должен быть установлен в значение true. | ℹ️ По умолчанию выключен, не рекомендуется к использованию
 |
| Скачивание файлов одним архивом (групповая обработка в табличном представлении категории) | <dependentAssembly\> <assemblyIdentity name\="ICSharpCode.SharpZipLib" publicKeyToken\="1b03e6acf1164f73" culture\="neutral" /> <bindingRedirect oldVersion\="0.0.0.0-1.3.1.9" newVersion\="1.3.1.9" /> </dependentAssembly\> Эти настройки должны присутствовать начиная с версии 2.232 | |
| Запуска Rebus на Postgre | PostgreQueueInterval | По умолчанию 120 секунд |
| Тип БД | UsePostgreSQLDatabase | В зависимости от БД переключается секция defaultConnectionFactory PostgreSQL: <defaultConnectionFactory type\="Npsql.NpgsqlConnectionFactory, EntityFramework6.Npgsql" SQL Server: <entityFramework\> <defaultConnectionFactory type\="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters\> <parameter value\="v11.0" /\> </parameters\> </defaultConnectionFactory\> </entityFramework\> |
| SSL при LDAP аутентификации | UseSecureLDAP | Использование SSL при аутентификации через LDAP. По умолчанию включено. | ℹ️ Актуально, если ActiveDirectoryAuthenticationMode не указан, т.е. LDAP является значением по умолчанию
 |
| Кэширование | IsCachingDisabled | Указывает, отключено ли кэширование Возможные значения: true (отключено) / false (не отключено) <appSettings\> <add key\="IsCachingDisabled" value\="true" /> </appSettings\> |
| Миграции | CodeMigrationsIsEnabled | Указывает, будут ли проводиться миграции или нет. Возможные значения: true (будут проведены миграции) / false (не будут проведены миграции) <appSettings\> <add key\="CodeMigrationsIsEnabled" value\="false" /> </appSettings\> |
| Уровень изоляции транзакций | DefaultIsolationLevel | Указание IsolationLevel для приложения. Возможные значения: Serializable, RepeatableRead, ReadCommitted, ReadUncommitted, Snapshot, Chaos, Unspecified. Пример: <appSettings> <add key="DefaultIsolationLevel" value="ReadCommitted" /> </appSettings> | ℹ️ Начиная с версии 2.261 Лира, ключ должен быть установлен в значении ReadCommitted |
| Уровень изоляции транзакций при миграциях | MigrationIsolationLevel | Указание IsolationLevel, используемого при выполнении кодовых миграций. Возможные значения аналогичны DefaultIsolationLevel. |
| Обновление кэша при импорте конфигурации | DisableAllCachesUpdate | Отключение автоматического запуска обновления кэша после импорта конфигурации. Возможные значения: true (Отключено) / false (Включено) <appSettings\> <add key\="DisableAllCachesUpdate" value\="true" /> </appSettings\> |
| Обновление токенов аутентификации | AuthTokenRefreshStrategy | Стратегия обновления токенов. Возможные значения: , SlidingExpiration (значение по-умолчанию) — автоматическое обновление токенов при активности пользователей. , None — обновление не предусмотрено, при истечении времени access-токена требуется повторная авторизация. , RefreshToken — используются refresh-токены (обновление токенов с помощью api-метода api/auth/token/refresh). <add key\="AuthTokenRefreshStrategy" value\="None" /> |
| Срок действия RefreshToken | AuthRefreshTokenExpiresInMinutes | Время жизни refresh-токена в минутах. Указывается, если в ключе "AuthTokenRefreshStrategy" установлено значение "RefreshToken". По умолчанию время жизни refresh-токена — 30 дней. <appSettings\> <add key\="AuthRefreshTokenExpiresInMinutes" value\="1500" /> </appSettings\> |
| Срок действия AccessToken | AuthTokenExpiresInMinutes | Время жизни access-токена в минутах. <appSettings\> <add key\="AuthTokenExpiresInMinutes" value\="1500" /> </appSettings\> |
| Отключение AspQueryBuilder (AQB) | DisableAQB | Отключение AspQueryBuilder. AQB по умолчанию отключен. Для этого ключ DisableAQB в секции appSettings по умолчанию имеет значение true. Если ключ в конфигурации отсутствует, поведение считается как true (AQB отключен). Чтобы включить AspQueryBuilder, необходимо явно указать значение false. <appSettings\> <add key\="DisableAQB" value\="true" /> </appSettings\> |
| Включение Мультифактора | MultifactorIsEnabled | Чтобы включить Мультифактор, ключ MultifactorIsEnabled должен быть установлен в значение true. По умолчанию включено. Двухфакторная аутентификация через систему MULTIFACTOR активируется в настройках системы. Подробнее о настройке мультифактора. |
| | MultifactorHost | Адрес хоста, где должен быть включен/отключен Мультифактор |
| Размер загружаемых файлов | MaxRequestLength | Длина запроса (ограничение размер загружаемых файлов) Если ключ не задан, значение по умолчанию = int.MaxValue (2147483647) = 2 Гб |
| Ограничение длины тела файла | MaxAllowedContentLength | Максимальная допустимая длина содержимого. Максимальное значение — 4 294 967 295 байт, что примерно равно 3,99 ГБ. |
| Отключение разрешенных доменов | IgnoreDomainCheck | Для отключения разрешенных доменов, что позволяет подключаться с любого доменного имени, ключ IgnoreDomainCheck должен быть установлен в значение true. |
| Использование небезопасных cookie для аутентификации. | AuthUseInsecureCookies | Разрешает использование небезопасных (не secure) файлов cookie для аутентификации. Возможные значения: true (разрешено) / false (запрещено). Значение по умолчанию — false. | ℹ️  Рекомендуется устанавливать ключ в значение true только в том случае, если приложение "Первая Форма" работает по протоколу http. Для работы приложения через https разрешение использования может не соответствовать требованиям безопасности.
 |
| Интеграция с LDAP | OpenLDAPProtocolVersion | Версия протокола LDAP. Если не задана, значение по умолчанию — 3. |
| Строка подключения (ConnectionString) для выполнения TSQL-выражений | SmartConnectionString | Если значение указано, то TSQL-выражения и функция Выполнить SQL запрос будут выполняться под заданной строкой подключения (ConnectionString). Если значение в ключе не задано, по умолчанию используется "TCConnectionString". |
| **Интерфейс SPA** | | |
| Брендирование | IsSpaHost | Запускает генерацию SPA-файлов брендирования в папку локальной файловой системы. По умолчанию true. Если ключ указан в значении false, то генерация брендированных статических файлов запускаться не будет. <appSettings\> <add key\="IsSpaHost" value\="true" /> </appSettings\> |
| Заполнение NaturalValue в БД | Backwards | Если настройка активна, в таблице dbo.ExtParamTableValues атрибут NaturalValue не будет затрагиваться при обновлении. Возможные значения true/false. |
| Доступность интерфейса SPA | EnableSpaSettings | Чтобы в пользовательском и администраторском интерфейсах "Первой Формы" были доступны элементы интерфейса SPA, ключ EnableSpaSettings должен быть установлен в значение true. <appSettings\> <add key\="EnableSpaSettings" value\="true" /> </appSettings\> |
| Карточка задачи | UseNewMTF | Чтобы шапка карточки задачи отображалась в новом дизайне (заказчик, срок и исполнитель в одну строку, под ними категория и текст), нужно установить ключ UseNewMTF в значение true. Если ключ UseNewMTF установлен в значение false или не определен, будет отображаться старый дизайн (слева столбец с основными параметрами и их значениями, справа — текст задачи). Обратите внимание: добавленные ранее вставки не будут работать при переходе из старого МТФ в новый в SPA. Подробнее о правилах миграции JS-вставок со старой карточки задачи в SPA. | ℹ️ Ключ действует только в категориях, где используется шаблон по умолчанию
 |
| | UseNewMTFStyle | Чтобы отображалась карточка задачи с новой лентой комментариев и перепиской, нужно установить ключ UseNewMTFStyle в значение true. Если ключ UseNewMTFStyle установлен в значение false или не определен, будет отображаться старый дизайн (лента комментариев внизу). | ℹ️ Ключ действует только в категориях, где используется шаблон по умолчанию
 |
| Порталы | UseSpaPortals | Чтобы включить использование новых порталов в старом фронте, нужно установить ключ UseSpaPortals в значение true |
| Профиль пользователя | UseSPAProfilePage | В интерфейсе SPA для просмотра профиля пользователя используется ссылка ~/spa/user/profile/{userid}. В старом интерфейсе по умолчанию используется ссылка ~/UserInfo.aspx?UserID={userid}. Чтобы включить переадресацию со старого профиля на новый, нужно включить ключ UseSPAProfilePage. Если UseSPAProfilePage установлен в значение true, то переадресация выполняется, если UseSPAProfilePage установлен в значение false или не определен — переадресация не выполняется |
| Страница авторизации | UseSpaLoginPage | Чтобы использовать страницу авторизации, адаптированную для интерфейса SPA, нужно установить ключ UseSpaLoginPage в значение true |
| Размер кэша файлов | FilesCacheSize | Позволяет задать максимальный размер кэша, выделяемый для файлов. Значение указывается в МБ. <add key\="FilesCacheSize" value\="1024" /> |
| Файлы, которые не нужно кэшировать | FilesExtensionsToNotCache | Позволяет задать типы файлов, которые не следует кэшировать. Расширения файлов указываются в строку через запятую: <add key\="FilesExtensionsToNotCache" value\="docx,ppt,xlsx" /> |
| Иерархия задач | useNewHierarchy | Чтобы использовать новую иерархию задач, нужно установить ключ useNewHierarchy в значение 1 |

Также настройки web.config можно посмотреть в разделах:

- [конфигурирование аутентификации по токенам](https://help.1forma.ru/maintenance_guide/maintenance/security/token_auth.md)

- [настройки для работы приложения в кластере](https://help.1forma.ru/maintenance_guide/maintenance/administration/websockets.md)

- [поиск Sphinx](https://help.1forma.ru/maintenance_guide/integrations/sphinx.md)

- [модуль интеграции с 1С](https://help.1forma.ru/maintenance_guide/integrations/1c-enterprise/1c_admin_win_https.md)
