Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ABP租户创建失败_C#_Asp.net Core_Entity Framework Core_Aspnetboilerplate_Sqlclient - Fatal编程技术网

C# ABP租户创建失败

C# ABP租户创建失败,c#,asp.net-core,entity-framework-core,aspnetboilerplate,sqlclient,C#,Asp.net Core,Entity Framework Core,Aspnetboilerplate,Sqlclient,我目前正在评估ABP 3.9,租户创建不起作用。 执行此代码时失败: CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id)); 这是我得到的一个例外: Mvc.ExceptionHandling.AbpExceptionFilter - Format of the initialization string does not conform to specification starting at index 0. System

我目前正在评估ABP 3.9,租户创建不起作用。
执行此代码时失败:

CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id));
这是我得到的一个例外:

Mvc.ExceptionHandling.AbpExceptionFilter - Format of the initialization string does not conform to specification starting at index 0.
System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0.
   at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
   at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms, Boolean firstKey)
   at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms)
   at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
   at System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key)
   at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.CreateDbConnection()
同一实体框架连接适用于我添加的其他
ApplicationService
类。不知道为什么只有租户创建失败。我正在扩展示例模板,该模板可以在ASP.NET样板网站上免费获得

非常感谢你的帮助。 当做
在Create方法下的TenantAppService类中,Zainu注释掉了从输入DTO创建加密连接字符串的代码。添加了一种从配置中读取连接字符串的方法,这在我的情况下起到了作用,因为我有一个用于所有租户的单一数据库。该数据库非常小,它将只存储租户的元数据,而大多数应用程序数据将在Azure存储中

    public override async Task<TenantDto> Create(CreateTenantDto input)
    {
        CheckCreatePermission();

        // Create tenant
        var tenant = ObjectMapper.Map<Tenant>(input);
        //this code is commented since we have single database for all tenants
        //tenant.ConnectionString = input.ConnectionString.IsNullOrEmpty()
        //    ? null
        //    : SimpleStringCipher.Instance.Encrypt(input.ConnectionString);

        //This would read connection string from configuration and pass it to 
       //connectionstring property of AbpTenant
        var configuration = 
       AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder());
        tenant.ConnectionString = SimpleStringCipher.Instance.Encrypt(configuration.GetConnectionString(OneCloudConsts.ConnectionStringName));
public override异步任务创建(CreateTenantDto输入)
{
CheckCreatePermission();
//创建租户
var tenant=ObjectMapper.Map(输入);
//由于我们对所有租户都有一个数据库,所以对这段代码进行了注释
//tenant.ConnectionString=input.ConnectionString.IsNullOrEmpty()
//?无效
//:SimpleStringCipher.Instance.Encrypt(输入.ConnectionString);
//这将从配置中读取连接字符串并将其传递给
//AbpTenant的connectionstring属性
变量配置=
Get(WebContentDirectoryFinder.CalculateContentRootFolder());
tenant.ConnectionString=SimpleStringCipher.Instance.Encrypt(configuration.GetConnectionString(OneCloudConsts.ConnectionStringName));

直到将代码部署到Azure中,我才意识到它最终会出现异常“System.ApplicationException:找不到内容根文件夹”

幸运的是,我在这里讨论过同样的问题,而且解决方法也是一样的

var startupPath=System.IO.Directory.GetCurrentDirectory(); var configuration=AppConfigurations.Get(startupPath);
tenant.ConnectionString=SimpleStringCipher.Instance.Encrypt(configuration.GetConnectionString(OneCloudConsts.ConnectionStringName));

您为新租户传递了格式错误的连接字符串。谢谢。调整代码以接受默认连接字符串会有所帮助。是否发布完整答案?