Получение шаблона asp.net исключение: неизвестное имя фильтра: MayHaveTenant на сервере - PullRequest
0 голосов
/ 07 июля 2019

У меня есть веб-приложение ASP.NET CORE, использующее aspnetboilerplate.com. Локально работает, но это исключение встречается в опубликованной версии:

Abp.AbpException: неизвестное имя фильтра: MayHaveTenant. Убедитесь, что этот фильтр зарегистрирован ранее.

Наконец, это исключение вызывает ошибку 502 для клиента:

502 - веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервера.

Я не использую мультитенантность в этом приложении. Я недавно видел это исключение, пока оно работало очень хорошо.

Я пытался зарегистрировать фильтр MayHaveTenant, но он уже был зарегистрирован. Я проследил неудавшиеся запросы, но не было никакой полезной информации. Может кто-нибудь помочь мне решить эту проблему?

Обновление

Вот моя трассировка стека:

    Abp.AbpException: Unknown filter name: MayHaveTenant. Be sure this filter is registered before.
   at Abp.Domain.Uow.UnitOfWorkBase.GetFilterIndex(String filterName)
   at Abp.Domain.Uow.UnitOfWorkBase.SetFilterParameter(String filterName, String parameterName, Object value)
   at Abp.Domain.Uow.UnitOfWorkBase.SetTenantId(Nullable`1 tenantId, Boolean switchMustHaveTenantEnableDisable)
   at Abp.Domain.Uow.UnitOfWorkBase.Begin(UnitOfWorkOptions options)
   at Abp.Domain.Uow.UnitOfWorkManager.Begin(UnitOfWorkOptions options)
   at Abp.Auditing.AuditingHelper.SaveAsync(AuditInfo auditInfo)
   at Abp.AspNetCore.Mvc.Auditing.AbpAuditActionFilter.OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ExceptionContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at MyProject.Authentication.JwtBearer.JwtTokenMiddleware.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d.MoveNext() in H:\MyProject\src\MyProject.Web.Core\Authentication\JwtBearer\JwtTokenMiddleware.cs:line 22
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context)

и вот мой DbContext:

    public class MyProjectDbContext : AbpZeroDbContext<Tenant, Role, User, MyProjectDbContext>
{
    /* Define a DbSet for each entity of the application */
    public DbSet<Category> Categories { get; set; }
    public DbSet<Provider> Providers { get; set; }
    public DbSet<Product> Products { get; set; }
    public DbSet<Property> Properties { get; set; }
    public DbSet<ProductProperty> ProductProperties { get; set; }
    public DbSet<Stock> Stocks { get; set; }
    public DbSet<ProductPicture> ProductPictures { get; set; }
    public DbSet<Comment> Comments { get; set; }
    public DbSet<Score> Scores { get; set; }
    public DbSet<Order> Orders { get; set; }
    public DbSet<OrderItem> OrderItems { get; set; }
    public DbSet<Privilege> Privileges { get; set; }

    public MyProjectDbContext(DbContextOptions<MyProjectDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfiguration(new CategoryConfiguration());
        modelBuilder.ApplyConfiguration(new OrderConfiguration());
        modelBuilder.ApplyConfiguration(new StockConfiguration());

        base.OnModelCreating(modelBuilder);
    }
}

1 Ответ

0 голосов
/ 10 июля 2019

Происходит, если вы переопределили метод OnModelCreating или Initialize вашего DbContext и не вызвали базовый метод.

...