gpt4 book ai didi

c# - 使用 Azure 服务总线的 NamespaceManager 时出现 ConfigurationManager 错误

转载 作者:行者123 更新时间:2023-12-02 05:58:26 25 4
gpt4 key购买 nike

我有一个简单的类,我想用它在我的 Azure 服务总线命名空间上创建队列。这是我的类(class):

public class ServiceBusPublisher
{
private readonly string _connString;

public ServiceBusPublisher(IConfiguration config)
{
_connString = config.GetSection("ServiceBus:Endpoint").Value;
}

public void CreateQueue(string queueName)
{
var namespaceManager = NamespaceManager.CreateFromConnectionString(_connString);

if (!namespaceManager.QueueExists(queueName))
{
namespaceManager.CreateQueue(queueName);
}
}
}

一切都已设置并且似乎正常工作,我在启动中注册了该服务,并且我的连接字符串运行良好,作为服务总线连接字符串:

Endpoint=sb://myservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefg12345

但是当它尝试调用 NamespaceManager.CreateFromConnectionString(_connString) 时,我收到此异常

System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified. File name: 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at Microsoft.ServiceBus.Messaging.Configuration.KeyValueConfigurationManager.CreateNameValueCollectionFromConnectionString(String connectionString) at Microsoft.ServiceBus.Messaging.Configuration.KeyValueConfigurationManager.Initialize(String connection, Nullable`1 transportType) at Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(String connectionString)

我觉得我疯了,因为这应该很简单,但它似乎试图访问配置文件,但不能。但我已经向它传递了连接字符串,所以我不确定它为什么要这样做。

我做错了什么吗?

最佳答案

我假设您正在使用WindowsAzure.ServiceBus图书馆。它与.net core平台不兼容。

Please note that this package requires .Net Framework 4.5.2 Full Profile.

如果你想在.net core平台创建队列。我建议你最好使用Management library或者等到 NamespaceManager 的替换包推出。

目前暂未发放替换包,具体信息可以引用此SO thread 。更多关于管理库的使用方法,可以引用另一篇SO thread .

以下是带有管理库的演示代码。

var credentials = SdkContext.AzureCredentialsFactory.FromFile(@"auth file path");
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
var sbNameSpace = "service bus namespace";
var resoureGroup = "resource group";
var servicebus = azure.ServiceBusNamespaces.GetByResourceGroup(resoureGroup, sbNameSpace);
var queue = servicebus.Queues.Define("queuename").Create()

enter image description here

关于c# - 使用 Azure 服务总线的 NamespaceManager 时出现 ConfigurationManager 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49765338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com