HI Maliming,
It seems that Angular seems to be working now. right?
No, Asp.Net Core server code is working fine. Angular URL giving error.
ozone.xitix.co.in - Angular URL ozoneS.xitix.co.in - Asp.net Cor URL
You can check on browser.
Last time Mr. Maliming has solved this problem at #7394 for my previos server and different URL.
I followed the same step and solved previously on last server. Again I am facing same problem when I am hosting same project on new server with new URL.
Asp.net Core URL : http://ozones.xitix.co.in/ Angular URL : http://ozone.xitix.co.in/
See Image of : appsettings.Production.json, appconfig.production.json
I wanted to load these files after login page. Because when client is accessing from other countries it is loading very slow for fist login page. kindly suggest me.
I have tested my web site speed A CSS file and JS file taking too long to load, I want to put this 2 files on my cloud server and link to approperiat location after building angular app. Plz guide this technique either.
how do I include tenant name in URL so that user should not know about Tenant Things and he simply enter URL for appropriate tenant?
You are intelligent to understand what I mean for user perspective If I have different client for same portal.
I refered this question aswer : #7511 it gives me some hint but not brief , kindly give me steps for making subdomain resolver.
Can you explain this? Actually I have repository class where am calling database SPs. so I want to call IDbPerTenantConnectionStringResolver Class from repository class in EnityFramework.
Or Do I have to inherit this class to my repository class ?
Basically I don't the way to make it fully multitenant. So many thing i am gussing trying.
Kindly Guide me to call this method GetNameOrConnectionString() for multitenancy.
public class DbPerTenantConnectionStringResolver : DefaultConnectionStringResolver, IDbPerTenantConnectionStringResolver
{
/// <summary>
/// Reference to the session.
/// </summary>
public IAbpSession AbpSession { get; set; }
private readonly ICurrentUnitOfWorkProvider _currentUnitOfWorkProvider;
private readonly ITenantCache _tenantCache;
/// <summary>
/// Initializes a new instance of the <see cref="DbPerTenantConnectionStringResolver"/> class.
/// </summary>
public DbPerTenantConnectionStringResolver(
IAbpStartupConfiguration configuration,
ICurrentUnitOfWorkProvider currentUnitOfWorkProvider,
ITenantCache tenantCache)
: base(configuration)
{
_currentUnitOfWorkProvider = currentUnitOfWorkProvider;
_tenantCache = tenantCache;
AbpSession = NullAbpSession.Instance;
}
public override string GetNameOrConnectionString(ConnectionStringResolveArgs args)
{
if (args.MultiTenancySide == MultiTenancySides.Host)
{
return GetNameOrConnectionString(new DbPerTenantConnectionStringResolveArgs(null, args));
}
return GetNameOrConnectionString(new DbPerTenantConnectionStringResolveArgs(GetCurrentTenantId(), args));
}
public virtual string GetNameOrConnectionString(DbPerTenantConnectionStringResolveArgs args)
{
if (args.TenantId == null)
{
//Requested for host
return base.GetNameOrConnectionString(args);
}
var tenantCacheItem = _tenantCache.Get(args.TenantId.Value);
if (tenantCacheItem.ConnectionString.IsNullOrEmpty())
{
//Tenant has not dedicated database
return base.GetNameOrConnectionString(args);
}
return tenantCacheItem.ConnectionString;
}
protected virtual int? GetCurrentTenantId()
{
return _currentUnitOfWorkProvider.Current != null
? _currentUnitOfWorkProvider.Current.GetTenantId()
: AbpSession.TenantId;
}
}
Oh dont get Bothered...I have solved and get that option.