问题:
描述:ABP使用Nginx代理导致租户ID(Abp.TenantId)丢失,自定义header无效无法传递,导致租户选择认证失败。原因是因为 Nginx 过滤是“.”这符号。
解决:
1,先从代码人手,在代码前端所有地方:Abp.TenantId 的地方,添加 :'Abp-TenantId': abp.multiTenancy.getTenantIdCookie(),为什么是添加而不是修改呢?因为要兼容 不用代理的情况。
2,在反向代理配置里面添加一段代码:proxy_set_header Abp.TenantId $http_abp_tenantid;
问题描述:数据库迁移问题,开发环境直接运行命令迁移,可是生产环境就不太方便运行命令,特别是如果使用jenkins+docker部署的话如果在手动就感觉不方便。
解决办法:在Web.MVC或Host的启动模块里面的初始化里面添一行代码:scope.Resolve<AbpZeroDbMigrator>().CreateOrMigrateForHost(SeedHelper.SeedHostDb);
这意思就是每次应用服务启动的时候去检查迁移一下数据库,类似于同于执行:Update-Migrator,这样的话我们就不需要担心正式环境下数据结构不同步的问题了,不过这里要注意的是,如果迁移问题生成的时候有问题,可能导致数据丢失,所以每次发布的时候要检查迁移文件。
样例: