微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AspNetBoilerplate - HttpContext 在自定义 TenantResolveContributor 中为 null 文档

如何解决AspNetBoilerplate - HttpContext 在自定义 TenantResolveContributor 中为 null 文档

文档

我已阅读 https://aspnetboilerplate.com/Pages/Documents/Multi-Tenancy

处的文档

我在应用程序项目中添加一个自定义的 TenantResolveContributor,并将其添加到 WebModule.PreInitialize 中的集合中。

        Configuration.MultiTenancy.Resolvers.Add<NameTenantResolveContributor>();

在 WebModule.Initialize 中,我解析了 TenantAppService,以便将其注入 RouteConfig

        TenantAppService tenantAppService = IocManager.Resolve<TenantAppService>();
        RouteConfig.RegisterRoutes(RouteTable.Routes,tenantAppService);

当执行到达 RouteConfig 时,它正确进入 NameTenantResolveContributor,但 HttpContext 为空。

我不确定我需要做什么来解决这个问题。

  • Abp 包版本:6.0.0
  • 基础框架:.Net

请求在此上下文中不可用
在 System.Web.HttpContext.get_Request() 在 DemoApp.MultiTenancy.NameTenantResolveContributor.ResolveTenantId() 在 >D:\src\ABP\DemoProject\6.0.0\src\DemoProject.Application\MultiTenancy\NameTenantResolveContributor.cs:line 40 在 Abp.MultiTenancy.TenantResolver.GetTenantIdFromContributors()

堆栈跟踪异常简短且不具描述性。当我复制详细信息时,消息是

System.Web.HttpException
  HResult=0x80004005
  Message=Request is not available in this context
  Source=<Cannot evaluate the exception source>
  StackTrace:
<Cannot evaluate the exception stack trace>

StackTrace

using Abp.Configuration.Startup;
using Abp.Dependency;
using Abp.Domain.Repositories;
using Abp.Extensions;
using Abp.MultiTenancy;
using Abp.Text;
using Abp.Web.MultiTenancy;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace DemoApp.MultiTenancy
{
    public class NameTenantResolveContributor : ITenantResolveContributor,ITransientDependency
    {
        private readonly IMultiTenancyConfig _multiTenancyConfig;
        private readonly ITenantStore _tenantStore;

        public NameTenantResolveContributor(IMultiTenancyConfig multiTenancyConfig,ITenantStore tenantStore)
        {
            _multiTenancyConfig = multiTenancyConfig;
            _tenantStore = tenantStore;
        }

        public int? ResolveTenantId()
        {
            string tenancyName = "";

            string[] urlParts = null;

            var httpContext = HttpContext.Current;
            if (httpContext == null)
            {
                return null;
            }
            //This is where the error occurs
            urlParts = httpContext.Request.Url.Segments.Select(x => x.TrimEnd('/')).Skip(1).ToArray();
            tenancyName = urlParts[0].ToLower();

            var tenantInfo = _tenantStore.Find(tenancyName);
            if (tenantInfo == null)
            {
                return null;
            }

            return tenantInfo.Id;
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?