Search code examples
content-management-systemdotnetnuke2sxc

Oqtane and Blazor-CMS on Windows using a remote PostgreSQL DB


I have downloaded the code for and launched in VS2022, the latest Oqtane 5.0.2 and in the interface of Oqtane, installed the 2SXC module trying to get to where I could run Blazor-cms.

Now, with Oqtane, I am connected to a remote PostgreSQL instance running on Ubuntu 22.0.4, and Postgre running version 15.

Oqtane is running well, but when I add the module for 2sxc, I get the following:

Keyword not supported: 'port'. - at Microsoft.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms, Boolean firstKey) at Microsoft.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms) at Microsoft.Data.SqlClient.SqlConnectionString..ctor(String connectionString) at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) at Microsoft.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) at Microsoft.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) at Microsoft.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at Microsoft.Data.SqlClient.SqlConnection..ctor(String connectionString) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.CreateDbConnection() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection() at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.GetDbConnection(DatabaseFacade databaseFacade) at ToSic.Eav.Repository.Efc.Parts.DbVersioning.GetChangeLogId() at ToSic.Eav.Repository.Efc.DbDataController.SaveChanges(Boolean acceptAllChangesOnSuccess, SaveChangesEvent baseEvent) at ToSic.Eav.Persistence.Efc.Models.EavDbContext.SaveChanges(Boolean acceptAllChangesOnSuccess) at Microsoft.EntityFrameworkCore.DbContext.SaveChanges() at ToSic.Eav.Repository.Efc.Parts.DbDimensions.AddRootCultureNode(String systemKey, String name, ToSicEavZones zone) at ToSic.Eav.Repository.Efc.Parts.DbZone.AddZone(String name) at ToSic.Eav.Apps.Internal.Work.ZoneCreator.Create(String name) at ToSic.Sxc.Oqt.Server.Run.OqtZoneMapper.GetZoneId(Int32 tenantId) in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Run\OqtZoneMapper.cs:line 54 at ToSic.Sxc.Oqt.Server.Context.OqtSite.get_ZoneId() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Context\OqtSite.cs:line 126 at ToSic.Sxc.Oqt.Server.Context.OqtModule.get_BlockIdentifier() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Context\OqtModule.cs:line 88 at ToSic.Sxc.Blocks.Internal.BlockFromModule.Init(IContextOfBlock ctx) at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.b__20_1() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 131 at ToSic.Lib.Logging.LogCallBaseExtensions.DoInTimer[TResult](ILogCall logCall, Func`1 action) at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.b__20_0() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 128 at ToSic.Lib.Helpers.GetOnce`1.Get(Func`1 generator) at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.get_Block() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 128 at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.b__26_0() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 145 at ToSic.Lib.Helpers.GetOnce`1.Get(Func`1 generator) at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.get_OutputCache() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 145 at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.<>c__DisplayClass9_0.b__1() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 77 at ToSic.Lib.Logging.ILog_Actions.Do(ILog log, String parameters, Action action, Boolean timer, Boolean enabled, String message, String cPath, String cName, Int32 cLine) at ToSic.Lib.Logging.ILog_Actions.Do(ILog log, Action action, Boolean timer, Boolean enabled, String message, String cPath, String cName, Int32 cLine) at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.<>c__DisplayClass9_0.b__0() in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 74 at ToSic.Lib.Logging.LogCallBaseExtensions.DoInTimer(ILogCall logCall, Action action) at ToSic.Sxc.Oqt.Server.Blocks.OqtSxcViewBuilder.Prepare(Alias alias, Site site, Page page, Module module, Boolean preRender) in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Blocks\OqtSxcViewBuilder.cs:line 74 at ToSic.Sxc.Oqt.Server.Controllers.OqtSxcRenderController.Prepare(Int32 aliasId, Int32 pageId, Int32 moduleId, String culture, Boolean preRender, String originalParameters) in C:\Projects\2sxc\2sxc\Src\Oqtane\ToSic.Sxc.Oqt.Server\Controllers\OqtSxcRenderController.cs:line 80

The fun bit is, none of the paths in the stack trace exist on my system. So, I have some questions:

  1. Is it possible to use 2sxc with Postgre ( I don't mind coding a new feature if I can get some guidance. Been coding in c# since 99. )
  2. Is this something in a config file I need to change, if so, Where, and which one.
  3. Are there other CMSs for Oqtane that are postgre friendly?

Observations:

I was expecting a wizard to appear when adding the module to a page. I created a new page to add it to. Instead, I got an error that implies that it has an error with SQL Server's port call. Sa I am using Postgre, I expect an error. However, I was hoping to find it inherited Oqtane's data connector or a simple config I can change. Or better yet, docs that helps deal with different RMDBSs, but came up empty handed. I don't mind adding one after. :-)

Max


Solution

  • As of now, 2sxc requires SQL server.

    This is probably not something that can change easily, because the code must also remain compatible to Dnn, which is SQL-Server only and running on an older .net framework.

    If it can be done, contributions would be very welcome ;)!

    Other CMSs for Oqtane: none that I'm aware of.