Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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
尝试使用INamedBucketProvider从C#应用程序在Couchbase上连接时出现访问被拒绝错误_C#_.net_.net Core_Dependency Injection_Couchbase - Fatal编程技术网

尝试使用INamedBucketProvider从C#应用程序在Couchbase上连接时出现访问被拒绝错误

尝试使用INamedBucketProvider从C#应用程序在Couchbase上连接时出现访问被拒绝错误,c#,.net,.net-core,dependency-injection,couchbase,C#,.net,.net Core,Dependency Injection,Couchbase,我正在尝试使用INamedBucketProvider的接口INamedBucketProvider,但遇到了“拒绝访问”错误。 当我尝试仅使用IBucketProvider进行连接时,它可以完美地工作 以下是我的代码的一些重要部分: 公共接口ICCustomerBucketProvider:INamedBucketProvider { //这里什么也进不去! } 公共静态类IServiceCollectionExtension { 公共静态IServiceCollection AddCouc

我正在尝试使用INamedBucketProvider的接口
INamedBucketProvider
,但遇到了“拒绝访问”错误。 当我尝试仅使用
IBucketProvider
进行连接时,它可以完美地工作

以下是我的代码的一些重要部分:

公共接口ICCustomerBucketProvider:INamedBucketProvider
{
//这里什么也进不去!
}
公共静态类IServiceCollectionExtension
{
公共静态IServiceCollection AddCouchbaseConnector(此IServiceCollection服务)
{
services.AddCouchbase(opt=>
{
opt.ConnectionString=”couchbase://localhost";
opt.UserName=“管理员”;
opt.Password=“asd123”;
opt.bucket=new[]{“customers”};
});
服务。AddCouchbaseBucket(“客户”);
退货服务;
}
}
公共类NativeInjectorBootStrapper
{
公共静态无效注册表服务(IServiceCollection服务)
{
// ...
// ...
// ...
services.AddCouchbaseConnector();
}
}
这项工作:

专用只读IBucketProvider\u bucketProvider;
公共客户防盗器(IBucketProvider bucketProvider)
{
_bucketProvider=bucketProvider;
}
专用异步任务GetCouchbaseCollection()
{
var bucket=wait_bucketProvider.GetBucketAsync(“客户”);
var collection=bucket.DefaultCollection();
回收;
}
但这不起作用:

专用只读ICCustomerBucketProvider\u customerBucketProvider;
公共CustomerEventHandler(ICCustomerBucketProvider customerBucketProvider)
{
_customerBucketProvider=customerBucketProvider;
}
专用异步任务GetCouchbaseCollection()
{
var bucket=await_customerBucketProvider.GetBucketAsync();
var collection=bucket.DefaultCollection();
回收;
}

我做错什么了吗?

因此,我决定实现自己的结构来处理桶和集合:

公共接口ICouchbaseBucketBase
{
公共ICouchbaseCollection默认集合{get;}
}
公共类CouchbaseBucketBase:ICouchbaseBucketBase
{
公共ICouchbaseCollection DefaultCollection{get;private set;}
受保护的只读IBucket\u存储桶;
public CouchbaseBucketBase(IBucketProvider bucketProvider,字符串bucketName)
{
_bucket=bucketProvider.GetBucketAsync(bucketName.GetAwaiter().GetResult();
DefaultCollection=GetCollection();
}
受保护的ICouchbaseCollection GetCollection(string collectionName=null)=>
!string.IsNullOrWhiteSpace(collectionName)?
_bucket.Collection(collectionName):\u bucket.DefaultCollection();
}
公共接口ICCustomerBucket:ICouchbaseBucketBase{}
公共类CustomerBucket:CouchbaseBucketBase、ICCustomerBucket
{
//公共ICouchbaseCollection其他非默认集合{get;private set;}
公共CustomerBucket(IBucketProvider bucketProvider):基本(bucketProvider,“客户”)
{
//OtherNonDefaultCollection=GetCollection(“OtherNonDefault”);
}
}
公共静态类IServiceCollectionExtension
{
公共静态IServiceCollection AddCouchbaseConnector(此IServiceCollection服务)
{
services.AddCouchbase(opt=>
{
opt.ConnectionString=”couchbase://localhost";
opt.UserName=“管理员”;
opt.Password=“asd123”;
opt.bucket=new[]{“customers”};
});
services.AddTransient();
返回服务;
}
}

为了记录在案,Github上也提出了这一问题,这里还有一些进一步的讨论: