Http tenant resolvers should be fault tolerant.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent 7de7a5e303
commit 7e662694e9

@ -7,7 +7,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext)
{
return httpContext.Request.Cookies[context.GetAspNetCoreMultiTenancyOptions().TenantIdKey];
return httpContext.Request?.Cookies[context.GetAspNetCoreMultiTenancyOptions().TenantIdKey];
}
}
}

@ -16,6 +16,11 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext)
{
if (httpContext.Request?.Host == null)
{
return null;
}
var hostName = httpContext.Request.Host.Host.RemovePreFix("http://", "https://");
var extractResult = FormattedStringValueExtracter.Extract(hostName, _domainFormat, true);

@ -11,7 +11,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext)
{
if (httpContext.Request.Headers.IsNullOrEmpty())
if (httpContext.Request == null || httpContext.Request.Headers.IsNullOrEmpty())
{
return null;
}

@ -1,4 +1,7 @@
using System;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Volo.Abp.MultiTenancy;
using Volo.ExtensionMethods;
@ -6,6 +9,13 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
public abstract class HttpTenantResolverBase : ITenantResolver
{
private readonly ILogger<HttpTenantResolverBase> _logger;
protected HttpTenantResolverBase(ILogger<HttpTenantResolverBase> logger)
{
_logger = logger;
}
public virtual void Resolve(ITenantResolveContext context)
{
var httpContext = context.GetHttpContext();
@ -14,7 +24,14 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
return;
}
ResolveFromHttpContext(context, httpContext);
try
{
ResolveFromHttpContext(context, httpContext);
}
catch (Exception e)
{
_logger.LogWarning(e.ToString());
}
}
private void ResolveFromHttpContext(ITenantResolveContext context, HttpContext httpContext)
@ -26,6 +43,6 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
}
}
protected abstract string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context,HttpContext httpContext);
protected abstract string GetTenantIdOrNameFromHttpContextOrNull([NotNull] ITenantResolveContext context, [NotNull] HttpContext httpContext);
}
}

@ -7,7 +7,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext)
{
if (!httpContext.Request.QueryString.HasValue)
if (httpContext.Request == null || !httpContext.Request.QueryString.HasValue)
{
return null;
}

Loading…
Cancel
Save