# Conflicts: # src/Umbraco.Core/Events/QueuingEventDispatcher.cs # src/Umbraco.Core/Logging/LogHttpRequestExtension.cs # src/Umbraco.Examine.Lucene/BackOfficeExamineSearcher.cs # src/Umbraco.Examine.Lucene/ExamineLuceneComposer.cs # src/Umbraco.Examine.Lucene/ExamineLuceneFinalComposer.cs # src/Umbraco.Examine.Lucene/Extensions/ExamineExtensions.cs # src/Umbraco.Examine.Lucene/ILuceneDirectoryFactory.cs # src/Umbraco.Infrastructure/Cache/DatabaseServerMessengerNotificationHandler.cs # src/Umbraco.Infrastructure/Cache/DefaultRepositoryCachePolicy.cs # src/Umbraco.Infrastructure/Cache/DistributedCacheBinder.cs # src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs # src/Umbraco.Infrastructure/Cache/DistributedCacheExtensions.cs # src/Umbraco.Infrastructure/Cache/FullDataSetRepositoryCachePolicy.cs # src/Umbraco.Infrastructure/Cache/RepositoryCachePolicyBase.cs # src/Umbraco.Infrastructure/Cache/SingleItemsOnlyRepositoryCachePolicy.cs # src/Umbraco.Infrastructure/Compose/AuditEventsComponent.cs # src/Umbraco.Infrastructure/Compose/BlockEditorComponent.cs # src/Umbraco.Infrastructure/Compose/NestedContentPropertyComponent.cs # src/Umbraco.Infrastructure/Compose/NestedContentPropertyComposer.cs # src/Umbraco.Infrastructure/Compose/NotificationsComponent.cs # src/Umbraco.Infrastructure/Compose/PublicAccessComponent.cs # src/Umbraco.Infrastructure/Compose/RelateOnCopyComponent.cs # src/Umbraco.Infrastructure/Compose/RelateOnTrashComponent.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Collections.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.DistributedCache.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Installer.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.MappingProfiles.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Repositories.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs # src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Uniques.cs # src/Umbraco.Infrastructure/Deploy/IGridCellValueConnector.cs # src/Umbraco.Infrastructure/EmailSender.cs # src/Umbraco.Infrastructure/Events/MigrationEventArgs.cs # src/Umbraco.Infrastructure/Examine/BaseValueSetBuilder.cs # src/Umbraco.Infrastructure/Examine/ContentIndexPopulator.cs # src/Umbraco.Infrastructure/Examine/ContentValueSetBuilder.cs # src/Umbraco.Infrastructure/Examine/ExamineExtensions.cs # src/Umbraco.Infrastructure/Examine/IBackOfficeExamineSearcher.cs # src/Umbraco.Infrastructure/Examine/IContentValueSetBuilder.cs # src/Umbraco.Infrastructure/Examine/IIndexDiagnostics.cs # src/Umbraco.Infrastructure/Examine/IPublishedContentValueSetBuilder.cs # src/Umbraco.Infrastructure/Examine/IndexRebuilder.cs # src/Umbraco.Infrastructure/Examine/MediaIndexPopulator.cs # src/Umbraco.Infrastructure/Examine/MediaValueSetBuilder.cs # src/Umbraco.Infrastructure/Examine/MemberIndexPopulator.cs # src/Umbraco.Infrastructure/Examine/MemberValueSetBuilder.cs # src/Umbraco.Infrastructure/Examine/NoopBackOfficeExamineSearcher.cs # src/Umbraco.Infrastructure/Examine/PublishedContentIndexPopulator.cs # src/Umbraco.Infrastructure/Examine/UmbracoExamineExtensions.cs # src/Umbraco.Infrastructure/Examine/UmbracoIndexConfig.cs # src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs # src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs # src/Umbraco.Infrastructure/HostedServices/ReportSiteTask.cs # src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs # src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs # src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs # src/Umbraco.Infrastructure/IPublishedContentQuery.cs # src/Umbraco.Infrastructure/Install/FilePermissionHelper.cs # src/Umbraco.Infrastructure/Install/InstallHelper.cs # src/Umbraco.Infrastructure/Install/InstallStepCollection.cs # src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseConfigureStep.cs # src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseInstallStep.cs # src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseUpgradeStep.cs # src/Umbraco.Infrastructure/Install/InstallSteps/NewInstallStep.cs # src/Umbraco.Infrastructure/Install/InstallSteps/StarterKitDownloadStep.cs # src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpRequestIdEnricher.cs # src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpRequestNumberEnricher.cs # src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs # src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs # src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs # src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs # src/Umbraco.Infrastructure/Logging/Viewer/SerilogLogViewerSourceBase.cs # src/Umbraco.Infrastructure/Manifest/DashboardAccessRuleConverter.cs # src/Umbraco.Infrastructure/Manifest/DataEditorConverter.cs # src/Umbraco.Infrastructure/Manifest/ManifestParser.cs # src/Umbraco.Infrastructure/Manifest/ValueValidatorConverter.cs # src/Umbraco.Infrastructure/Media/ImageDimensionExtractor.cs # src/Umbraco.Infrastructure/Migrations/Expressions/Create/Index/CreateIndexBuilder.cs # src/Umbraco.Infrastructure/Migrations/Expressions/Delete/KeysAndIndexes/DeleteKeysAndIndexesBuilder.cs # src/Umbraco.Infrastructure/Migrations/IMigrationContext.cs # src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs # src/Umbraco.Infrastructure/Migrations/Install/DatabaseDataCreator.cs # src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs # src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreatorFactory.cs # src/Umbraco.Infrastructure/Migrations/MigrationBase.cs # src/Umbraco.Infrastructure/Migrations/MigrationBase_Extra.cs # src/Umbraco.Infrastructure/Migrations/MigrationContext.cs # src/Umbraco.Infrastructure/Migrations/MigrationPlan.cs # src/Umbraco.Infrastructure/Migrations/PostMigrations/ClearCsrfCookies.cs # src/Umbraco.Infrastructure/Migrations/PostMigrations/PublishedSnapshotRebuilder.cs # src/Umbraco.Infrastructure/Migrations/PostMigrations/RebuildPublishedSnapshot.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/Upgrader.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/AddContentNuTable.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/ConvertRelatedLinksToMultiUrlPicker.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypeMigration.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/DropDownFlexiblePreValueMigrator.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/RenamingPreValueMigrator.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/UmbracoSliderPreValueMigrator.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/ValueListPreValueMigrator.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DropDownPropertyEditorsMigration.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/FallbackLanguage.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/MergeDateAndDateTimePropertyEditor.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/Models/PropertyDataDto80.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/PropertyEditorsMigrationBase.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/RadioAndCheckboxPropertyEditorsMigration.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/TablesForScheduledPublishing.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/UpdatePickerIntegerValuesToUdi.cs # src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_1_0/ConvertTinyMceAndGridMediaUrlsToLocalLink.cs # src/Umbraco.Infrastructure/Models/Blocks/BlockEditorData.cs # src/Umbraco.Infrastructure/Models/Blocks/BlockEditorDataConverter.cs # src/Umbraco.Infrastructure/Models/Blocks/BlockItemData.cs # src/Umbraco.Infrastructure/Models/Blocks/BlockListEditorDataConverter.cs # src/Umbraco.Infrastructure/Models/Blocks/BlockListLayoutItem.cs # src/Umbraco.Infrastructure/Models/Mapping/EntityMapDefinition.cs # src/Umbraco.Infrastructure/Models/PathValidationExtensions.cs # src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs # src/Umbraco.Infrastructure/Packaging/PackageInstallation.cs # src/Umbraco.Infrastructure/Persistence/DatabaseModelDefinitions/DefinitionFactory.cs # src/Umbraco.Infrastructure/Persistence/DatabaseModelDefinitions/IndexColumnDefinition.cs # src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs # src/Umbraco.Infrastructure/Persistence/Dtos/PropertyDataDto.cs # src/Umbraco.Infrastructure/Persistence/Factories/AuditEntryFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/ConsentFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/ContentBaseFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/ContentTypeFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/DataTypeFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/DictionaryItemFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/DictionaryTranslationFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/ExternalLoginFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/LanguageFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/MacroFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/MemberGroupFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/PropertyFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/PropertyGroupFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/PublicAccessEntryFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/RelationFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/RelationTypeFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/ServerRegistrationFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/TagFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/TemplateFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/UserFactory.cs # src/Umbraco.Infrastructure/Persistence/Factories/UserGroupFactory.cs # src/Umbraco.Infrastructure/Persistence/ISqlContext.cs # src/Umbraco.Infrastructure/Persistence/Mappers/AccessMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/AuditEntryMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/AuditItemMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/BaseMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/ConsentMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/ContentMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/ContentTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/DataTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/DictionaryMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/DictionaryTranslationMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/DomainMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/ExternalLoginMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/LanguageMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MacroMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MediaMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MediaTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MemberGroupMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MemberMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/MemberTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/PropertyGroupMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/PropertyMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/PropertyTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/RelationMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/RelationTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/ServerRegistrationMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/SimpleContentTypeMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/TagMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/TemplateMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/UmbracoEntityMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/UserGroupMapper.cs # src/Umbraco.Infrastructure/Persistence/Mappers/UserMapper.cs # src/Umbraco.Infrastructure/Persistence/NPocoDatabaseExtensions.cs # src/Umbraco.Infrastructure/Persistence/NPocoSqlExtensions.cs # src/Umbraco.Infrastructure/Persistence/Querying/ExpressionVisitorBase.cs # src/Umbraco.Infrastructure/Persistence/Querying/ModelToSqlExpressionVisitor.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IContentRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IContentTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IContentTypeRepositoryBase.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IDataTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IDocumentRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IEntityRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IMediaRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IMediaTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IMemberRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IMemberTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/IPublicAccessRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditEntryRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ConsentRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeCommonRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepositoryBase.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeContainerRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentBlueprintRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentTypeContainerRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DomainRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityContainerRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityRepositoryBase.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ExternalLoginRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/KeyValueRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LanguageRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LanguageRepositoryExtensions.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MacroRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeContainerRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberGroupRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/NotificationsRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PartialViewMacroRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PublicAccessRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RedirectUrlRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationTypeRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RepositoryBase.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ServerRegistrationRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/SimilarNodeName.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/SimpleGetRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TagRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TemplateRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserGroupRepository.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs # src/Umbraco.Infrastructure/Persistence/SqlContext.cs # src/Umbraco.Infrastructure/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs # src/Umbraco.Infrastructure/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs # src/Umbraco.Infrastructure/Persistence/SqlSyntaxExtensions.cs # src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs # src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs # src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/BlockListConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/BlockListPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/CheckBoxListPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ColorPickerConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ColorPickerPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ComplexEditorValidator.cs # src/Umbraco.Infrastructure/PropertyEditors/ComplexPropertyEditorContentEventHandler.cs # src/Umbraco.Infrastructure/PropertyEditors/ConfigurationEditorOfTConfiguration.cs # src/Umbraco.Infrastructure/PropertyEditors/ContentPickerConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ContentPickerPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/DateTimeConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/DateTimePropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/DropDownFlexibleConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/DropDownFlexiblePropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/EmailAddressConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/EmailAddressPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyValueEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/GridConfiguration.cs # src/Umbraco.Infrastructure/PropertyEditors/GridConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/GridPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/GridPropertyIndexValueFactory.cs # src/Umbraco.Infrastructure/PropertyEditors/ImageCropperConfiguration.cs # src/Umbraco.Infrastructure/PropertyEditors/ImageCropperConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyValueEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/LabelConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/LabelPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ListViewConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ListViewPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MarkdownConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MarkdownPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MediaPickerConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MediaPickerPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultiNodePickerConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultiNodeTreePickerPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultipleTextStringConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultipleTextStringPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/MultipleValueEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/NestedContentConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/NestedContentPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/PropertyEditorsComponent.cs # src/Umbraco.Infrastructure/PropertyEditors/PropertyEditorsComposer.cs # src/Umbraco.Infrastructure/PropertyEditors/RadioButtonsPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/RichTextConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/RichTextEditorPastedImages.cs # src/Umbraco.Infrastructure/PropertyEditors/RichTextPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/SliderConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/SliderPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TagConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TagsPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TextAreaConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TextAreaPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TextboxConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TextboxPropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TrueFalseConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/TrueFalsePropertyEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/UploadFileTypeValidator.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/BlockEditorConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/BlockListPropertyValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ColorPickerValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/FlexibleDropdownPropertyValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValue.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/NestedContentManyValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/NestedContentSingleValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/NestedContentValueConverterBase.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/RteMacroRenderingValueConverter.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueListConfigurationEditor.cs # src/Umbraco.Infrastructure/PropertyEditors/ValueListUniqueValueValidator.cs # src/Umbraco.Infrastructure/PublishedContentQuery.cs # src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs # src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs # src/Umbraco.Infrastructure/Routing/RedirectTrackingComponent.cs # src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs # src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs # src/Umbraco.Infrastructure/RuntimeState.cs # src/Umbraco.Infrastructure/Scoping/IScope.cs # src/Umbraco.Infrastructure/Scoping/IScopeProvider.cs # src/Umbraco.Infrastructure/Scoping/Scope.cs # src/Umbraco.Infrastructure/Scoping/ScopeProvider.cs # src/Umbraco.Infrastructure/Scoping/ScopeReference.cs # src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs # src/Umbraco.Infrastructure/Search/ExamineComponent.cs # src/Umbraco.Infrastructure/Search/ExamineComposer.cs # src/Umbraco.Infrastructure/Search/ExamineFinalComponent.cs # src/Umbraco.Infrastructure/Search/ExamineUserComponent.cs # src/Umbraco.Infrastructure/Search/UmbracoTreeSearcher.cs # src/Umbraco.Infrastructure/Security/BackOfficeClaimsPrincipalFactory.cs # src/Umbraco.Infrastructure/Security/BackOfficeIdentityUser.cs # src/Umbraco.Infrastructure/Security/BackOfficeUserStore.cs # src/Umbraco.Infrastructure/Security/IUmbracoUserManager.cs # src/Umbraco.Infrastructure/Security/SignOutAuditEventArgs.cs # src/Umbraco.Infrastructure/Security/UmbracoIdentityUser.cs # src/Umbraco.Infrastructure/Security/UmbracoUserManager.cs # src/Umbraco.Infrastructure/Security/UserInviteEventArgs.cs # src/Umbraco.Infrastructure/Serialization/ConfigurationEditorJsonSerializer.cs # src/Umbraco.Infrastructure/Services/IdKeyMap.cs # src/Umbraco.Infrastructure/Services/Implement/AuditService.cs # src/Umbraco.Infrastructure/Services/Implement/ConsentService.cs # src/Umbraco.Infrastructure/Services/Implement/ContentService.cs # src/Umbraco.Infrastructure/Services/Implement/ContentTypeBaseServiceProvider.cs # src/Umbraco.Infrastructure/Services/Implement/ContentTypeService.cs # src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBase.cs # src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs # src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs # src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs # src/Umbraco.Infrastructure/Services/Implement/DomainService.cs # src/Umbraco.Infrastructure/Services/Implement/EntityService.cs # src/Umbraco.Infrastructure/Services/Implement/EntityXmlSerializer.cs # src/Umbraco.Infrastructure/Services/Implement/ExternalLoginService.cs # src/Umbraco.Infrastructure/Services/Implement/FileService.cs # src/Umbraco.Infrastructure/Services/Implement/KeyValueService.cs # src/Umbraco.Infrastructure/Services/Implement/LocalizationService.cs # src/Umbraco.Infrastructure/Services/Implement/MacroService.cs # src/Umbraco.Infrastructure/Services/Implement/MediaService.cs # src/Umbraco.Infrastructure/Services/Implement/MediaTypeService.cs # src/Umbraco.Infrastructure/Services/Implement/MemberGroupService.cs # src/Umbraco.Infrastructure/Services/Implement/MemberService.cs # src/Umbraco.Infrastructure/Services/Implement/MemberTypeService.cs # src/Umbraco.Infrastructure/Services/Implement/NotificationService.cs # src/Umbraco.Infrastructure/Services/Implement/PackagingService.cs # src/Umbraco.Infrastructure/Services/Implement/PropertyValidationService.cs # src/Umbraco.Infrastructure/Services/Implement/PublicAccessService.cs # src/Umbraco.Infrastructure/Services/Implement/RedirectUrlService.cs # src/Umbraco.Infrastructure/Services/Implement/RelationService.cs # src/Umbraco.Infrastructure/Services/Implement/RepositoryService.cs # src/Umbraco.Infrastructure/Services/Implement/ScopeRepositoryService.cs # src/Umbraco.Infrastructure/Services/Implement/ServerRegistrationService.cs # src/Umbraco.Infrastructure/Services/Implement/TagService.cs # src/Umbraco.Infrastructure/Services/Implement/UserService.cs # src/Umbraco.Infrastructure/Suspendable.cs # src/Umbraco.Infrastructure/Sync/BatchedDatabaseServerMessenger.cs # src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs # src/Umbraco.Infrastructure/Sync/RefreshInstruction.cs # src/Umbraco.Infrastructure/Sync/RefreshInstructionEnvelope.cs # src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs # src/Umbraco.Infrastructure/TagQuery.cs # src/Umbraco.Infrastructure/Trees/TreeRootNode.cs # src/Umbraco.Infrastructure/WebAssets/BackOfficeJavaScriptInitializer.cs # src/Umbraco.Infrastructure/WebAssets/BackOfficeWebAssets.cs # src/Umbraco.Infrastructure/WebAssets/RuntimeMinifierExtensions.cs # src/Umbraco.Infrastructure/WebAssets/ServerVariablesParser.cs # src/Umbraco.Infrastructure/WebAssets/ServerVariablesParsing.cs # src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs # src/Umbraco.ModelsBuilder.Embedded/DependencyInjection/UmbracoBuilderExtensions.cs # src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderNotificationHandler.cs # src/Umbraco.ModelsBuilder.Embedded/PublishedElementExtensions.cs # src/Umbraco.Persistence.SqlCe/SqlCeBulkSqlInsertProvider.cs # src/Umbraco.Persistence.SqlCe/SqlCeEmbeddedDatabaseCreator.cs # src/Umbraco.Persistence.SqlCe/SqlCeSyntaxProvider.cs # src/Umbraco.PublishedCache.NuCache/ContentStore.cs # src/Umbraco.PublishedCache.NuCache/DataSource/ContentNestedData.cs # src/Umbraco.PublishedCache.NuCache/DependencyInjection/UmbracoBuilderExtensions.cs # src/Umbraco.PublishedCache.NuCache/MemberCache.cs # src/Umbraco.PublishedCache.NuCache/Persistence/NuCacheContentRepository.cs # src/Umbraco.PublishedCache.NuCache/Persistence/NuCacheContentService.cs # src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs # src/Umbraco.PublishedCache.NuCache/PublishedSnapshotServiceEventHandler.cs # src/Umbraco.PublishedCache.NuCache/SnapDictionary.cs # src/Umbraco.TestData/LoadTestController.cs # src/Umbraco.TestData/UmbracoTestDataController.cs # src/Umbraco.Tests.Benchmarks/ModelToSqlExpressionHelperBenchmarks.cs # src/Umbraco.Tests.Benchmarks/SqlTemplatesBenchmark.cs # src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs # src/Umbraco.Tests.Common/TestHelperBase.cs # src/Umbraco.Tests.Common/TestHelpers/MockedValueEditors.cs # src/Umbraco.Tests.Common/TestHelpers/SolidPublishedSnapshot.cs # src/Umbraco.Tests.Integration/Cache/DistributedCacheBinderTests.cs # src/Umbraco.Tests.Integration/DependencyInjection/UmbracoBuilderExtensions.cs # src/Umbraco.Tests.Integration/Implementations/TestHelper.cs # src/Umbraco.Tests.Integration/TestServerTest/TestAuthHandler.cs # src/Umbraco.Tests.Integration/Testing/BaseTestDatabase.cs # src/Umbraco.Tests.Integration/Testing/TestUmbracoDatabaseFactoryProvider.cs # src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs # src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs # src/Umbraco.Tests.Integration/Umbraco.Core/Mapping/ContentTypeModelMappingTests.cs # src/Umbraco.Tests.Integration/Umbraco.Core/Packaging/PackageDataInstallationTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Migrations/AdvancedMigrationTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/DatabaseBuilderTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/LocksTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/NPocoTests/NPocoBulkInsertTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/NPocoTests/NPocoFetchTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/AuditRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/ContentTypeRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DictionaryRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DomainRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/EntityRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/KeyValueRepositoryTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/LanguageRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/MacroRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/MediaRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/MediaTypeRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/MemberRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/MemberTypeRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/NotificationsRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/PartialViewRepositoryTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/PublicAccessRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RedirectUrlRepositoryTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationTypeRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/ScriptRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/ServerRegistrationRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/StylesheetRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TagRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/TemplateRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserGroupRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/UserRepositoryTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/SchemaValidationTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/SqlServerTableByTableTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/SyntaxProvider/SqlServerSyntaxProviderTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/UnitOfWorkTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeFileSystemsTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/AuditServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/CachedDataTypeServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceEventTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTagsTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentTypeServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentTypeServiceVariantsTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/DataTypeServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/EntityServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ExternalLoginServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/LocalizationServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MacroServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MediaServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MediaTypeServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/RedirectUrlServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ThreadSafetyServiceTest.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/UserServiceTests.cs # src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs # src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/UmbracoBackOfficeServiceCollectionExtensionsTests.cs # src/Umbraco.Tests.Integration/Umbraco.Web.Website/Routing/FrontEndRouteTests.cs # src/Umbraco.Tests.UnitTests/AutoFixture/AutoMoqDataAttribute.cs # src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs # src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/BackOffice/BackOfficeClaimsPrincipalFactoryTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Cache/DefaultCachePolicyTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Cache/FullDataSetCachePolicyTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Cache/SingleItemsOnlyCachePolicyTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeLoaderTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/NCronTabParserTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/CoreThings/UdiTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/ManifestParserTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockEditorComponentTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/BlockListPropertyValueConverterTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ConvertersTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/PropertyEditorValueConverterTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/NestedContentTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/ReflectionUtilitiesTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Core/Scoping/ScopeEventDispatcherTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Examine/UmbracoContentValueSetValidatorTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Media/ImageSharpImageUrlGeneratorTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Migrations/AlterMigrationTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Migrations/MigrationPlanTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Migrations/MigrationTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Migrations/PostMigrationTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/ContentMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/ContentTypeMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/DataTypeMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/DictionaryMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/DictionaryTranslationMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/LanguageMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/MediaMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/PropertyGroupMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/PropertyTypeMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/RelationMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Mappers/RelationTypeMapperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/NPocoTests/NPocoSqlExtensionsTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/NPocoTests/NPocoSqlTemplateTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/NPocoTests/NPocoSqlTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/ContentTypeRepositorySqlClausesTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/DataTypeDefinitionRepositorySqlClausesTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/ExpressionTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/MediaRepositorySqlClausesTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/MediaTypeRepositorySqlClausesTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Persistence/Querying/QueryBuilderTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Serialization/JsonNetSerializerTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/AmbiguousEventTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Services/PropertyValidationServiceTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/UsersControllerTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/AngularIntegration/JsInitializationTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/AngularIntegration/ServerVariablesParserTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs # src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Macros/MacroParserTests.cs # src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/SurfaceControllerTests.cs # src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs # src/Umbraco.Tests/Issues/U9560.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/LegacyBackgroundTask/BackgroundTaskRunner.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedContentCache.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedMediaCache.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedMemberCache.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedSnapshot.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/SafeXmlReaderWriter.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedContent.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedProperty.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedSnapshotService.cs # src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStore.cs # src/Umbraco.Tests/Models/MediaXmlTest.cs # src/Umbraco.Tests/Persistence/Mappers/MapperTestBase.cs # src/Umbraco.Tests/Persistence/NPocoTests/PetaPocoCachesTest.cs # src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs # src/Umbraco.Tests/PublishedContent/NuCacheTests.cs # src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs # src/Umbraco.Tests/PublishedContent/PublishedContentMoreTests.cs # src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs # src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs # src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs # src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs # src/Umbraco.Tests/PublishedContent/PublishedRouterTests.cs # src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs # src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs # src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs # src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs # src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs # src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs # src/Umbraco.Tests/Routing/ContentFinderByUrlTests.cs # src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs # src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs # src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs # src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs # src/Umbraco.Tests/Routing/UrlRoutesTests.cs # src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs # src/Umbraco.Tests/Scoping/ScopedXmlTests.cs # src/Umbraco.Tests/Services/TestWithSomeContentBase.cs # src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs # src/Umbraco.Tests/TestHelpers/BaseWebTest.cs # src/Umbraco.Tests/TestHelpers/ControllerTesting/AuthenticateEverythingMiddleware.cs # src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs # src/Umbraco.Tests/TestHelpers/Entities/MockedContent.cs # src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs # src/Umbraco.Tests/TestHelpers/Entities/MockedMedia.cs # src/Umbraco.Tests/TestHelpers/Entities/MockedMember.cs # src/Umbraco.Tests/TestHelpers/Entities/MockedPropertyTypes.cs # src/Umbraco.Tests/TestHelpers/Stubs/TestLastChanceFinder.cs # src/Umbraco.Tests/TestHelpers/Stubs/TestUserPasswordConfig.cs # src/Umbraco.Tests/TestHelpers/TestHelper.cs # src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs # src/Umbraco.Tests/TestHelpers/TestObjects.cs # src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs # src/Umbraco.Tests/Testing/Objects/TestDataSource.cs # src/Umbraco.Tests/Testing/UmbracoTestBase.cs # src/Umbraco.Tests/UmbracoExamine/EventsTest.cs # src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs # src/Umbraco.Tests/UmbracoExamine/IndexTest.cs # src/Umbraco.Tests/UmbracoExamine/SearchTests.cs # src/Umbraco.Tests/Web/PublishedContentQueryTests.cs # src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs # src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs # src/Umbraco.Web.BackOffice/Controllers/BackOfficeServerVariables.cs # src/Umbraco.Web.BackOffice/Controllers/ContentController.cs # src/Umbraco.Web.BackOffice/Controllers/ContentTypeController.cs # src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs # src/Umbraco.Web.BackOffice/Controllers/EntityController.cs # src/Umbraco.Web.BackOffice/Controllers/ExamineManagementController.cs # src/Umbraco.Web.BackOffice/Controllers/LogController.cs # src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs # src/Umbraco.Web.BackOffice/Controllers/MediaController.cs # src/Umbraco.Web.BackOffice/Controllers/MemberController.cs # src/Umbraco.Web.BackOffice/Controllers/PreviewController.cs # src/Umbraco.Web.BackOffice/Controllers/PublishedSnapshotCacheStatusController.cs # src/Umbraco.Web.BackOffice/Controllers/SectionController.cs # src/Umbraco.Web.BackOffice/Controllers/TemplateQueryController.cs # src/Umbraco.Web.BackOffice/Controllers/UsersController.cs # src/Umbraco.Web.BackOffice/DependencyInjection/ServiceCollectionExtensions.cs # src/Umbraco.Web.BackOffice/DependencyInjection/UmbracoBuilderExtensions.cs # src/Umbraco.Web.BackOffice/Extensions/HtmlHelperBackOfficeExtensions.cs # src/Umbraco.Web.BackOffice/Filters/CheckIfUserTicketDataIsStaleAttribute.cs # src/Umbraco.Web.BackOffice/Security/BackOfficePasswordHasher.cs # src/Umbraco.Web.BackOffice/Security/BackOfficeSecurityStampValidator.cs # src/Umbraco.Web.BackOffice/Security/BackOfficeSessionIdValidator.cs # src/Umbraco.Web.BackOffice/Security/BackOfficeSignInManager.cs # src/Umbraco.Web.BackOffice/Security/BackOfficeUserManagerAuditer.cs # src/Umbraco.Web.BackOffice/Security/ConfigureBackOfficeIdentityOptions.cs # src/Umbraco.Web.BackOffice/Security/ExternalSignInAutoLinkOptions.cs # src/Umbraco.Web.BackOffice/Security/IBackOfficeSignInManager.cs # src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs # src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs # src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs # src/Umbraco.Web.BackOffice/Trees/ContentTypeTreeController.cs # src/Umbraco.Web.BackOffice/Trees/DataTypeTreeController.cs # src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs # src/Umbraco.Web.BackOffice/Trees/MediaTypeTreeController.cs # src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs # src/Umbraco.Web.BackOffice/Trees/MemberTypeTreeController.cs # src/Umbraco.Web.BackOffice/Trees/TemplatesTreeController.cs # src/Umbraco.Web.Common/Controllers/PluginController.cs # src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs # src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs # src/Umbraco.Web.Common/Extensions/ImageCropperTemplateCoreExtensions.cs # src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs # src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs # src/Umbraco.Web.Common/Install/InstallApiController.cs # src/Umbraco.Web.Common/Install/InstallController.cs # src/Umbraco.Web.Common/Middleware/UmbracoRequestLoggingMiddleware.cs # src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs # src/Umbraco.Web.Common/Security/BackOfficeUserManager.cs # src/Umbraco.Web.Common/UmbracoHelper.cs # src/Umbraco.Web.UI.NetCore/Views/Partials/grid/editors/media.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/Gallery.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/ListChildPagesFromChangeableSource.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/ListImagesFromMediaFolder.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/UmbracoBackOffice/AuthorizeUpgrade.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/UmbracoBackOffice/Default.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/UmbracoBackOffice/Preview.cshtml # src/Umbraco.Web.Website/Controllers/SurfaceController.cs # src/Umbraco.Web.Website/Controllers/UmbLoginController.cs # src/Umbraco.Web.Website/Controllers/UmbLoginStatusController.cs # src/Umbraco.Web.Website/Controllers/UmbProfileController.cs # src/Umbraco.Web.Website/Controllers/UmbRegisterController.cs # src/Umbraco.Web.Website/DependencyInjection/UmbracoBuilderExtensions.cs # src/Umbraco.Web.Website/Extensions/PublishedContentExtensions.cs # src/Umbraco.Web/Composing/Current.cs # src/Umbraco.Web/HttpContextUmbracoContextAccessor.cs # src/Umbraco.Web/Macros/MemberUserKeyProvider.cs # src/Umbraco.Web/Mvc/PluginController.cs # src/Umbraco.Web/Mvc/RenderRouteHandler.cs # src/Umbraco.Web/Mvc/RouteDefinition.cs # src/Umbraco.Web/Mvc/SurfaceController.cs # src/Umbraco.Web/Runtime/AspNetUmbracoBootPermissionChecker.cs # src/Umbraco.Web/Security/ActiveDirectoryBackOfficeUserPasswordChecker.cs # src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs # src/Umbraco.Web/Security/BackofficeSecurity.cs # src/Umbraco.Web/Security/Providers/MembersRoleProvider.cs # src/Umbraco.Web/Security/UmbracoMembershipProviderBase.cs # src/Umbraco.Web/UmbracoApplication.cs # src/Umbraco.Web/UmbracoApplicationBase.cs # src/Umbraco.Web/UmbracoContext.cs # src/Umbraco.Web/UmbracoContextFactory.cs # src/Umbraco.Web/UmbracoDbProviderFactoryCreator.cs # src/Umbraco.Web/UmbracoHttpHandler.cs # src/Umbraco.Web/UmbracoWebService.cs # src/Umbraco.Web/WebApi/UmbracoApiController.cs # src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs # src/Umbraco.Web/WebApi/UmbracoAuthorizeAttribute.cs # src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
327 lines
15 KiB
C#
327 lines
15 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
using System.Web;
|
|
using System.Web.Hosting;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Options;
|
|
using Serilog.Context;
|
|
using Umbraco.Cms.Core;
|
|
using Umbraco.Cms.Core.Cache;
|
|
using Umbraco.Cms.Core.Composing;
|
|
using Umbraco.Cms.Core.Configuration;
|
|
using Umbraco.Cms.Core.Configuration.Models;
|
|
using Umbraco.Cms.Core.Hosting;
|
|
using Umbraco.Cms.Core.IO;
|
|
using Umbraco.Cms.Core.Logging;
|
|
using Umbraco.Cms.Core.Logging.Serilog;
|
|
using Umbraco.Cms.Core.Logging.Serilog.Enrichers;
|
|
using Umbraco.Cms.Core.Net;
|
|
using Umbraco.Cms.Core.Services;
|
|
using Umbraco.Extensions;
|
|
using Umbraco.Web.Hosting;
|
|
using ConnectionStrings = Umbraco.Cms.Core.Configuration.Models.ConnectionStrings;
|
|
using Current = Umbraco.Web.Composing.Current;
|
|
using GlobalSettings = Umbraco.Cms.Core.Configuration.Models.GlobalSettings;
|
|
using ILogger = Microsoft.Extensions.Logging.ILogger;
|
|
|
|
namespace Umbraco.Web
|
|
{
|
|
/// <summary>
|
|
/// Provides an abstract base class for the Umbraco HttpApplication.
|
|
/// </summary>
|
|
public abstract class UmbracoApplicationBase : HttpApplication
|
|
{
|
|
private readonly ILogger<UmbracoApplicationBase> _logger;
|
|
private readonly SecuritySettings _securitySettings;
|
|
private readonly GlobalSettings _globalSettings;
|
|
private readonly ConnectionStrings _connectionStrings;
|
|
private readonly IIOHelper _ioHelper;
|
|
private IRuntime _runtime;
|
|
private IServiceProvider _factory;
|
|
private ILoggerFactory _loggerFactory;
|
|
|
|
protected UmbracoApplicationBase()
|
|
{
|
|
HostingSettings hostingSettings = null;
|
|
GlobalSettings globalSettings = null;
|
|
SecuritySettings securitySettings = null;
|
|
WebRoutingSettings webRoutingSettings = null;
|
|
|
|
var hostingEnvironment = new AspNetHostingEnvironment(Options.Create(hostingSettings));
|
|
var loggingConfiguration = new LoggingConfiguration(
|
|
Path.Combine(hostingEnvironment.ApplicationPhysicalPath, "App_Data\\Logs"));
|
|
var ioHelper = new IOHelperWindows(hostingEnvironment);
|
|
var logger = SerilogLogger.CreateWithDefaultConfiguration(hostingEnvironment, loggingConfiguration, new ConfigurationRoot(new List<IConfigurationProvider>()));
|
|
|
|
var backOfficeInfo = new AspNetBackOfficeInfo(globalSettings, ioHelper, _loggerFactory.CreateLogger<AspNetBackOfficeInfo>(), Options.Create(webRoutingSettings));
|
|
var profiler = GetWebProfiler(hostingEnvironment);
|
|
}
|
|
|
|
private IProfiler GetWebProfiler(IHostingEnvironment hostingEnvironment)
|
|
{
|
|
// create and start asap to profile boot
|
|
if (!hostingEnvironment.IsDebugMode)
|
|
{
|
|
// should let it be null, that's how MiniProfiler is meant to work,
|
|
// but our own IProfiler expects an instance so let's get one
|
|
return new NoopProfiler();
|
|
}
|
|
|
|
return new NoopProfiler();
|
|
}
|
|
|
|
protected UmbracoApplicationBase(ILogger<UmbracoApplicationBase> logger, ILoggerFactory loggerFactory, SecuritySettings securitySettings, GlobalSettings globalSettings, ConnectionStrings connectionStrings, IIOHelper ioHelper, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo)
|
|
{
|
|
_logger = logger;
|
|
_securitySettings = securitySettings;
|
|
_globalSettings = globalSettings;
|
|
_connectionStrings = connectionStrings;
|
|
_ioHelper = ioHelper;
|
|
_loggerFactory = loggerFactory;
|
|
|
|
Logger = logger;
|
|
}
|
|
|
|
protected ILogger<UmbracoApplicationBase> Logger { get; }
|
|
|
|
/// <summary>
|
|
/// Gets a <see cref="ITypeFinder"/>
|
|
/// </summary>
|
|
/// <param name="hostingEnvironment"></param>
|
|
/// <param name="logger"></param>
|
|
/// <param name="profiler"></param>
|
|
/// <returns></returns>
|
|
protected virtual ITypeFinder GetTypeFinder(IHostingEnvironment hostingEnvironment, ILogger logger, IProfiler profiler)
|
|
{
|
|
// TODO: Currently we are not passing in any TypeFinderConfig (with ITypeFinderSettings) which we should do, however
|
|
// this is not critical right now and would require loading in some config before boot time so just leaving this as-is for now.
|
|
var runtimeHashPaths = new RuntimeHashPaths();
|
|
// the bin folder and everything in it
|
|
runtimeHashPaths.AddFolder(new DirectoryInfo(hostingEnvironment.MapPathContentRoot("~/bin")));
|
|
// the app code folder and everything in it
|
|
runtimeHashPaths.AddFile(new FileInfo(hostingEnvironment.MapPathContentRoot("~/App_Code")));
|
|
// global.asax (the app domain also monitors this, if it changes will do a full restart)
|
|
runtimeHashPaths.AddFile(new FileInfo(hostingEnvironment.MapPathContentRoot("~/global.asax")));
|
|
var runtimeHash = new RuntimeHash(new ProfilingLogger(_loggerFactory.CreateLogger<ProfilingLogger>(), profiler), runtimeHashPaths);
|
|
return new TypeFinder(_loggerFactory.CreateLogger<TypeFinder>(), new DefaultUmbracoAssemblyProvider(
|
|
// GetEntryAssembly was actually an exposed API by request of the aspnetcore team which works in aspnet core because a website
|
|
// in that case is essentially an exe. However in netframework there is no entry assembly, things don't really work that way since
|
|
// the process that is running the site is iisexpress, so this returns null. The best we can do is fallback to GetExecutingAssembly()
|
|
// which will just return Umbraco.Infrastructure (currently with netframework) and for our purposes that is OK.
|
|
// If you are curious... There is really no way to get the entry assembly in netframework without the hosting website having it's own
|
|
// code compiled for the global.asax which is the entry point. Because the default global.asax for umbraco websites is just a file inheriting
|
|
// from Umbraco.Web.UmbracoApplication, the global.asax file gets dynamically compiled into a DLL in the dynamic folder (we can get an instance
|
|
// of that, but this doesn't really help us) but the actually entry execution is still Umbraco.Web. So that is the 'highest' level entry point
|
|
// assembly we can get and we can only get that if we put this code into the WebRuntime since the executing assembly is the 'current' one.
|
|
// For this purpose, it doesn't matter if it's Umbraco.Web or Umbraco.Infrastructure since all assemblies are in that same path and we are
|
|
// getting rid of netframework.
|
|
Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly(), _loggerFactory), runtimeHash);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the application register.
|
|
/// </summary>
|
|
protected virtual IServiceCollection GetRegister(GlobalSettings globalSettings)
|
|
{
|
|
return new ServiceCollection();
|
|
}
|
|
|
|
// events - in the order they trigger
|
|
|
|
// were part of the BootManager architecture, would trigger only for the initial
|
|
// application, so they need not be static, and they would let ppl hook into the
|
|
// boot process... but I believe this can be achieved with components as well and
|
|
// we don't need these events.
|
|
//public event EventHandler ApplicationStarting;
|
|
//public event EventHandler ApplicationStarted;
|
|
|
|
// this event can only be static since there will be several instances of this class
|
|
// triggers for each application instance, ie many times per lifetime of the application
|
|
public static event EventHandler ApplicationInit;
|
|
|
|
// this event can only be static since there will be several instances of this class
|
|
// triggers once per error
|
|
public static event EventHandler ApplicationError;
|
|
|
|
// this event can only be static since there will be several instances of this class
|
|
// triggers once per lifetime of the application, before it is unloaded
|
|
public static event EventHandler ApplicationEnd;
|
|
|
|
#region Start
|
|
|
|
// internal for tests
|
|
internal void HandleApplicationStart(object sender, EventArgs evargs)
|
|
{
|
|
// ******** THIS IS WHERE EVERYTHING BEGINS ********
|
|
|
|
|
|
var globalSettings = _globalSettings;
|
|
var umbracoVersion = new UmbracoVersion();
|
|
|
|
// create the register for the application, and boot
|
|
// the boot manager is responsible for registrations
|
|
var register = GetRegister(globalSettings);
|
|
//var boostrapper = GetRuntime(
|
|
// _globalSettings,
|
|
// _connectionStrings,
|
|
// umbracoVersion,
|
|
// _ioHelper,
|
|
// _logger,
|
|
// _loggerFactory,
|
|
// null, // TODO get from somewhere that isn't Current.
|
|
// null, // TODO get from somewhere that isn't Current.
|
|
// null // TODO get from somewhere that isn't Current.
|
|
// );
|
|
//_factory = Current.Factory = _runtime.Configure(register);
|
|
|
|
|
|
// now we can add our request based logging enrichers (globally, which is what we were doing in netframework before)
|
|
LogContext.Push(new HttpSessionIdEnricher(_factory.GetRequiredService<ISessionIdResolver>()));
|
|
LogContext.Push(new HttpRequestNumberEnricher(_factory.GetRequiredService<IRequestCache>()));
|
|
LogContext.Push(new HttpRequestIdEnricher(_factory.GetRequiredService<IRequestCache>()));
|
|
|
|
_runtime = _factory.GetRequiredService<IRuntime>();
|
|
}
|
|
|
|
// called by ASP.NET (auto event wireup) once per app domain
|
|
// do NOT set instance data here - only static (see docs)
|
|
// sender is System.Web.HttpApplicationFactory, evargs is EventArgs.Empty
|
|
protected void Application_Start(object sender, EventArgs evargs)
|
|
{
|
|
Thread.CurrentThread.SanitizeThreadCulture();
|
|
HandleApplicationStart(sender, evargs);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Init
|
|
|
|
private void OnApplicationInit(object sender, EventArgs evargs)
|
|
{
|
|
TryInvoke(ApplicationInit, "ApplicationInit", sender, evargs);
|
|
}
|
|
|
|
// called by ASP.NET for every HttpApplication instance after all modules have been created
|
|
// which means that this will be called *many* times for different apps when Umbraco runs
|
|
public override void Init()
|
|
{
|
|
// note: base.Init() is what initializes all of the http modules, ties up a bunch of stuff with IIS, etc...
|
|
// therefore, since OWIN is an HttpModule when running in IIS/ASP.Net the OWIN startup is not executed
|
|
// until this method fires and by that time - Umbraco has booted already
|
|
|
|
base.Init();
|
|
OnApplicationInit(this, new EventArgs());
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region End
|
|
|
|
protected virtual void OnApplicationEnd(object sender, EventArgs evargs)
|
|
{
|
|
ApplicationEnd?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
|
|
// internal for tests
|
|
internal void HandleApplicationEnd()
|
|
{
|
|
if (_runtime != null)
|
|
{
|
|
_runtime.DisposeIfDisposable();
|
|
|
|
_runtime = null;
|
|
}
|
|
|
|
// try to log the detailed shutdown message (typical asp.net hack: http://weblogs.asp.net/scottgu/433194)
|
|
try
|
|
{
|
|
var runtime = (HttpRuntime) typeof(HttpRuntime).InvokeMember("_theRuntime",
|
|
BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField,
|
|
null, null, null);
|
|
if (runtime == null)
|
|
return;
|
|
|
|
var shutDownMessage = (string)runtime.GetType().InvokeMember("_shutDownMessage",
|
|
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField,
|
|
null, runtime, null);
|
|
|
|
var shutDownStack = (string)runtime.GetType().InvokeMember("_shutDownStack",
|
|
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField,
|
|
null, runtime, null);
|
|
|
|
Current.Logger.LogInformation("Application shutdown. Details: {ShutdownReason}\r\n\r\n_shutDownMessage={ShutdownMessage}\r\n\r\n_shutDownStack={ShutdownStack}",
|
|
HostingEnvironment.ShutdownReason,
|
|
shutDownMessage,
|
|
shutDownStack);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//if for some reason that fails, then log the normal output
|
|
Current.Logger.LogInformation("Application shutdown. Reason: {ShutdownReason}", HostingEnvironment.ShutdownReason);
|
|
}
|
|
|
|
Current.Logger.DisposeIfDisposable();
|
|
}
|
|
|
|
// called by ASP.NET (auto event wireup) once per app domain
|
|
// sender is System.Web.HttpApplicationFactory, evargs is EventArgs.Empty
|
|
protected void Application_End(object sender, EventArgs evargs)
|
|
{
|
|
OnApplicationEnd(sender, evargs);
|
|
HandleApplicationEnd();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Error
|
|
|
|
protected virtual void OnApplicationError(object sender, EventArgs evargs)
|
|
{
|
|
ApplicationError?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
|
|
private void HandleApplicationError()
|
|
{
|
|
var exception = Server.GetLastError();
|
|
|
|
// ignore HTTP errors
|
|
if (exception.GetType() == typeof(HttpException)) return;
|
|
|
|
Current.Logger.LogError(exception, "An unhandled exception occurred");
|
|
}
|
|
|
|
// called by ASP.NET (auto event wireup) at any phase in the application life cycle
|
|
protected void Application_Error(object sender, EventArgs e)
|
|
{
|
|
// when unhandled errors occur
|
|
HandleApplicationError();
|
|
OnApplicationError(sender, e);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Utilities
|
|
|
|
private static void TryInvoke(EventHandler handler, string name, object sender, EventArgs evargs)
|
|
{
|
|
try
|
|
{
|
|
handler?.Invoke(sender, evargs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Current.Logger.LogError(ex, "Error in {Name} handler.", name);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|