add defensive logic to handle scenario where a tenant connection string does not exist in appsettings.json

This commit is contained in:
sbwalker 2023-11-29 17:31:51 -05:00
parent 077343ca20
commit 85f9597f2c
3 changed files with 22 additions and 7 deletions

View File

@ -398,7 +398,7 @@ namespace Oqtane.Infrastructure
}
catch (Exception ex)
{
result.Message = "An Error Occurred Executing Upgrade Logic. " + ex.ToString();
result.Message = "An Error Occurred Executing Upgrade Logic On Tenant " + tenant.Name + ". " + ex.ToString();
_filelogger.LogError(Utilities.LogMessage(this, result.Message));
}
}
@ -468,7 +468,7 @@ namespace Oqtane.Infrastructure
}
catch (Exception ex)
{
result.Message = "An Error Occurred Installing " + moduleDefinition.Name + " Version " + versions[i] + " - " + ex.ToString();
result.Message = "An Error Occurred Installing " + moduleDefinition.Name + " Version " + versions[i] + " On Tenant " + tenant.Name + " - " + ex.ToString();
}
}
}

View File

@ -45,13 +45,20 @@ namespace Oqtane.Repository
Tenant tenant = _tenantManager.GetTenant();
if (tenant != null)
{
_connectionString = _config.GetConnectionString(tenant.DBConnectionString)
.Replace($"|{Constants.DataDirectory}|", AppDomain.CurrentDomain.GetData(Constants.DataDirectory)?.ToString());
_databaseType = tenant.DBType;
_connectionString = _config.GetConnectionString(tenant.DBConnectionString);
if (_connectionString != null)
{
_connectionString = _connectionString.Replace($"|{Constants.DataDirectory}|", AppDomain.CurrentDomain.GetData(Constants.DataDirectory)?.ToString());
_databaseType = tenant.DBType;
}
else
{
// tenant connection string does not exist in appsettings.json
}
}
}
if (!String.IsNullOrEmpty(_databaseType))
if (!string.IsNullOrEmpty(_databaseType))
{
var type = Type.GetType(_databaseType);
ActiveDatabase = Activator.CreateInstance(type) as IDatabase;

View File

@ -93,7 +93,15 @@ namespace Oqtane.Repository
public int ExecuteNonQuery(string connectionString, string databaseType, string query)
{
var db = GetActiveDatabase(databaseType);
return db.ExecuteNonQuery(GetConnectionString(connectionString), query);
var connectionstring = GetConnectionString(connectionString);
if (connectionstring != null)
{
return db.ExecuteNonQuery(GetConnectionString(connectionString), query);
}
else
{
return 0;
}
}
public string GetScriptFromAssembly(Assembly assembly, string fileName)