[英]Getting ConfigurationManager error when using NamespaceManager for Azure Service Bus
我有一個簡單的 class,我想用它在我的 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);
}
}
}
一切都已設置並且似乎正常工作,我在我的 Startup 中注冊了該服務,並且我的連接字符串作為服務總線連接字符串正常運行:
端點=sb://myservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefg12345
但是當它試圖調用NamespaceManager.CreateFromConnectionString(_connString)
時,我得到了這個異常
System.IO.FileNotFoundException:無法加載文件或程序集“System.Configuration.ConfigurationManager,Version=0.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。 該系統找不到指定的文件。 文件名: Microsoft.ServiceBus.Messaging.Configuration.KeyValueConfigurationManager.CreateNameValueCollectionFromConnectionString(String connectionString) 在 Microsoft.ServiceBus.Messaging.Configuration.KeyValueConfigurationManager .Initialize(String connection, Nullable`1 transportType) 在 Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(String connectionString)
我覺得我瘋了,因為這應該是如此簡單,但它似乎正在嘗試訪問配置文件,但它不能。 但我已經將連接字符串傳遞給它,所以我不確定為什么要這樣做。
難道我做錯了什么?
我假設您正在使用WindowsAzure.ServiceBus庫。 它與.net核心平台不兼容 。
請注意,此程序包需要.Net Framework 4.5.2完整配置文件。
如果要在.net核心平台中創建隊列。 我建議您最好使用管理庫,或者等到NamespaceManager的替代軟件包推出為止。
當前, 替換包未發布 ,有關詳細信息,您可以參考此SO線程 。 有關如何使用管理庫的更多詳細信息,可以參考另一個SO線程 。
以下是管理庫的演示代碼。
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()
ManagementClient現在可用作 Microsoft.Azure.ServiceBus v5.2.0 中的替代品,請參閱:
和CreateQueue方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.