diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo.Abp.AspNetCore.MultiTenancy.csproj b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo.Abp.AspNetCore.MultiTenancy.csproj index 22a2cb4247..fe6f4f498a 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo.Abp.AspNetCore.MultiTenancy.csproj +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo.Abp.AspNetCore.MultiTenancy.csproj @@ -23,4 +23,9 @@ + + + + + diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs index 7ac6f41176..080427cf6b 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs @@ -16,6 +16,8 @@ using Microsoft.AspNetCore.Mvc.Formatters; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Net.Http.Headers; +using Volo.Abp.AspNetCore.MultiTenancy.Views; +using Volo.Abp.AspNetCore.RazorViews; using Volo.Abp.Http; using Volo.Abp.Json; using Volo.Abp.MultiTenancy; @@ -68,7 +70,7 @@ public class AbpAspNetCoreMultiTenancyOptions } } - context.Response.Headers.Add("Abp-Tenant-Resolve-Error", HtmlEncoder.Default.Encode(exception.Message)); + context.Response.Headers.Append("Abp-Tenant-Resolve-Error", HtmlEncoder.Default.Encode(exception.Message)); if (isCookieAuthentication && context.Request.Method.Equals("Get", StringComparison.OrdinalIgnoreCase) && !context.Request.IsAjax()) { context.Response.Redirect(context.Request.GetEncodedUrl()); @@ -133,18 +135,11 @@ public class AbpAspNetCoreMultiTenancyOptions } else { - context.Response.StatusCode = (int)HttpStatusCode.NotFound; - context.Response.ContentType = "text/html"; - var message = exception.Message; var details = exception is BusinessException businessException ? businessException.Details : string.Empty; - await context.Response.WriteAsync($"\r\n"); - await context.Response.WriteAsync($"

{HtmlEncoder.Default.Encode(message)}

{HtmlEncoder.Default.Encode(details!)}
\r\n"); - await context.Response.WriteAsync("\r\n"); - - // Note the 500 spaces are to work around an IE 'feature' - await context.Response.WriteAsync(new string(' ', 500)); + var errorPage = new MultiTenancyMiddlewareErrorPage(new MultiTenancyMiddlewareErrorPageModel(message, details!)); + await errorPage.ExecuteAsync(context); } return true; diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/Views/MultiTenancyMiddlewareErrorPage.Designer.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/Views/MultiTenancyMiddlewareErrorPage.Designer.cs new file mode 100644 index 0000000000..751eec21bb --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/Views/MultiTenancyMiddlewareErrorPage.Designer.cs @@ -0,0 +1,96 @@ +// +#pragma warning disable 1591 +namespace Volo.Abp.AspNetCore.RazorViews +{ + #line hidden + using System; + using System.Threading.Tasks; +#nullable restore +#line 1 "MultiTenancyMiddlewareErrorPage.cshtml" +using System.Globalization; + +#line default +#line hidden +#nullable disable +#nullable restore +#line 2 "MultiTenancyMiddlewareErrorPage.cshtml" +using Volo.Abp.AspNetCore.MultiTenancy.Views; + +#line default +#line hidden +#nullable disable +#nullable restore +#line 3 "MultiTenancyMiddlewareErrorPage.cshtml" +using Volo.Abp.AspNetCore.RazorViews; + +#line default +#line hidden +#nullable disable + internal class MultiTenancyMiddlewareErrorPage : AbpCompilationRazorPageBase + { + #pragma warning disable 1998 + public async override global::System.Threading.Tasks.Task ExecuteAsync() + { +#nullable restore +#line 5 "MultiTenancyMiddlewareErrorPage.cshtml" + + Response.ContentType = "text/html; charset=utf-8"; + Response.StatusCode = 404; + +#line default +#line hidden +#nullable disable + WriteLiteral("\n"); + WriteLiteral("\n