Существуют различия между запуском сайта CMS 12/Commerce 14 локально и в DXP. Ваш сайт может работать локально, и вы следовали https://docs.developers.optimizely.com/digital-experience-platform/docs/creating-a-new-cms-site-and-deploying для развертывания самого первого пакета в вашей среде интеграции DXP, но сайт не может быть запущен.
Домашняя страница сайта возвращается
и поток логов из DXP возвращается
2023-03-29T17:01:35.805270361Z info: EPiServer.Framework.Initialization.InitializationEngine[0]
2023-03-29T17:01:35.805331662Z Initialization started
2023-03-29T17:01:51.109499486Z fail: EPiServer.Framework.Initialization.InitializationEngine[0]
2023-03-29T17:01:51.116283188Z Initialize action failed for 'Initialize on class EPiServer.Data.DataInitialization, EPiServer.Data, Version=12.12.1.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7'
2023-03-29T17:01:51.116757895Z Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught)
2023-03-29T17:01:51.117438105Z ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): Name or service not known
2023-03-29T17:01:51.117457305Z at System.Net.Dns.GetHostEntryOrAddressesCore(String hostName, Boolean justAddresses, AddressFamily addressFamily, ValueStopwatch stopwatch)
2023-03-29T17:01:51.117463405Z at System.Net.Dns.GetHostAddresses(String hostNameOrAddress, AddressFamily family)
2023-03-29T17:01:51.118171016Z at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
2023-03-29T17:01:51.118188116Z at Microsoft.Data.SqlClient.SNI.SNICommon.GetDnsIpAddresses(String serverName)
2023-03-29T17:01:51.118563822Z at Microsoft.Data.SqlClient.SNI.SNITCPHandle.Connect(String serverName, Int32 port, TimeSpan timeout, Boolean isInfiniteTimeout, SqlConnectionIPAddressPreference ipPreference, String cachedFQDN, SQLDNSInfo& pendingDNSInfo)
2023-03-29T17:01:51.119198131Z at Microsoft.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, Int64 timerExpire, Boolean parallel, SqlConnectionIPAddressPreference ipPreference, String cachedFQDN, SQLDNSInfo& pendingDNSInfo, Boolean tlsFirst, String hostNameInCertificate)
2023-03-29T17:01:51.119217632Z at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
2023-03-29T17:01:51.119224132Z at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
2023-03-29T17:01:51.119229632Z at Microsoft.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnectionString connectionOptions, Boolean withFailover)
2023-03-29T17:01:51.119235032Z at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
2023-03-29T17:01:51.119239832Z at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
2023-03-29T17:01:51.119262132Z at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
2023-03-29T17:01:51.119267432Z at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool)
2023-03-29T17:01:51.119273733Z at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
2023-03-29T17:01:51.119278733Z at Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
2023-03-29T17:01:51.119283933Z at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
2023-03-29T17:01:51.119288933Z at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
2023-03-29T17:01:51.119293233Z at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
2023-03-29T17:01:51.119298033Z at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
2023-03-29T17:01:51.119302433Z at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
2023-03-29T17:01:51.119307533Z at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
2023-03-29T17:01:51.119312533Z at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
2023-03-29T17:01:51.119317633Z at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
2023-03-29T17:01:51.119322033Z at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)
2023-03-29T17:01:51.119326333Z at Microsoft.Data.SqlClient.SqlConnection.Open()
2023-03-29T17:01:51.119336934Z at EPiServer.Data.Providers.Internal.ConnectionContext.b__15_0()
2023-03-29T17:01:51.119341734Z at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
2023-03-29T17:01:51.119346034Z at EPiServer.Data.Providers.Internal.ConnectionContext.OpenConnection()
2023-03-29T17:01:51.119350734Z at EPiServer.Data.Internal.DefaultConnectionContextHandler.CreateConnectionScope(Boolean requireTransaction, Action completeAction)
2023-03-29T17:01:51.119355534Z at EPiServer.Data.Internal.ConnectionScopeResolver.GetConnectionScope(Boolean requireTransaction)
2023-03-29T17:01:51.119359934Z at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.GetConnection(Boolean requireTransaction)
2023-03-29T17:01:51.119364734Z at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.<>c__DisplayClass24_0`1.b__0()
2023-03-29T17:01:51.119370034Z at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
2023-03-29T17:01:51.119374334Z at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.Execute[TResult](Func`1 action)
2023-03-29T17:01:51.119378634Z at EPiServer.Data.SchemaUpdates.Internal.DatabaseVersionRetriever.GetDatabaseVersion(Boolean forceRefresh)
2023-03-29T17:01:51.119382834Z at EPiServer.Data.SchemaUpdates.Internal.DatabaseVersionValidator.GetStatus(IEnumerable`1 connectionStringOptions)
2023-03-29T17:01:51.119387334Z at EPiServer.Data.SchemaUpdates.Internal.DatabaseSchemaManagerImplementation.<>c__DisplayClass6_0.b__0(ISchemaUpdater u)
2023-03-29T17:01:51.119392534Z at System.Linq.Enumerable.SelectIPartitionIterator`2.ToList()
2023-03-29T17:01:51.119396834Z at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
2023-03-29T17:01:51.119742240Z at EPiServer.Data.SchemaUpdates.Internal.DatabaseSchemaManagerImplementation.EnsureDatabaseSchema(DataAccessOptions dataAccessOptions)
2023-03-29T17:01:51.119764740Z at EPiServer.Data.DataInitialization.ValidateDatabaseSchema(InitializationEngine context)
2023-03-29T17:01:51.119770940Z at EPiServer.Data.DataInitialization.Initialize(InitializationEngine context)
2023-03-29T17:01:51.120378249Z at EPiServer.Framework.Initialization.Internal.ModuleNode.<>c__DisplayClass4_0.b__0()
2023-03-29T17:01:51.120418850Z at EPiServer.Framework.Initialization.Internal.ModuleNode.Execute(Action a, String key)
2023-03-29T17:01:51.120424950Z at EPiServer.Framework.Initialization.Internal.ModuleNode.Initialize(InitializationEngine context)
2023-03-29T17:01:51.120429850Z at EPiServer.Framework.Initialization.InitializationEngine.InitializeModules()
2023-03-29T17:01:51.120434550Z ClientConnectionId:00000000-0000-0000-0000-000000000000
У вас нет доступа администратора к DXP. Как это проверить?
Обычно с инфраструктурой все в порядке, поскольку она довольно проста и предоставляется службой автоматизации. В коде приложения могут быть ошибки, из-за которых оно не может подключиться к ресурсам DXP.
Локально у вас есть база данных CMS и Commerce, и вы указываете на них код приложения с помощью конфигурации в файле appsettings.json или конфигурируя их программно.
В DXP из соображений безопасности Optimizely не предоставляла строку подключения вашим базам данных для непосредственной настройки.
Пакет EPiServer.CloudPlatform.The Cms необходимо установить и
вызов
public void ConfigureServices(
IServiceCollection services,
IConfiguration configuration,
IWebHostEnvironment env)
{
...
if (!env.IsDevelopment())
{
services.AddCmsCloudPlatformSupport(configuration);
}
}
в методе ConfigureServices в файле Startup.cs, чтобы внедрить конфигурации DXP (служба приложений Azure) в переменную конфигурации для последующего использования.
Однако файл program.cs и файлы startup.cs могут иметь сложную настройку и исключения, такие как «EPiServer.Data.DataInitialization failed», и «Microsoft.Data.SqlClient.SqlException» будет выдано, когда служба приложений не сможет найти необходимый Azure. База данных SQL или большой двоичный объект Azure после вызова AddCmsCloudPlatformSupport в средах DXP.
Существует хитрость, позволяющая локально отлаживать AddCmsCloudPlatformSupport без проб и ошибок при развертывании на DXP.
Создайте профиль запуска для среды интеграции (аналогично среде интеграции DXP).
{
"profiles": {
"FakeDXP": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Integration",
"CONNECTIONSTRINGS__EPISERVERAZUREBLOBS": "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;",
"CONNECTIONSTRINGS__EPISERVERDB": "Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\QuickSilver.mdf;Initial Catalog=QuickSilver;Integrated Security=True;Connect Timeout=30",
"CONNECTIONSTRINGS__ECFSQLCONNECTION": "Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\QuickSilver.Commerce.mdf;Initial Catalog=QuickSilver.Commerce;Integrated Security=True;Connect Timeout=30"
},
"applicationUrl": "https://localhost:5000/"
}
}
}
В конфигурации строка подключения большого двоичного объекта Azure эмулируется Азурит.
Набор services.AddEventProvider
public void ConfigureServices(
IServiceCollection services,
IConfiguration configuration,
IWebHostEnvironment env)
{
...
if (!env.IsDevelopment())
{
services.AddCmsCloudPlatformSupport(configuration);
services.AddEventProvider():
}
}
После вызова функции AddCmsCloudPlatformSupport строки подключения из переменных среды можно отладить и проверить, были ли они введены правильно.
06 мая 2023 г.