当前位置: 首页 > 知识库问答 >
问题:

使用NamespaceManager for Azure服务总线时获取ConfigurationManager错误

沈弘盛
2023-03-14

我有一个简单的类,我想用它在我的Azure service bus命名空间上创建一个队列。这是我的班级:

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。服务总线。窗户。净/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefg12345

但是当它试图调用NamespaceManager时。CreateFromConnectionString(\u connString),我得到了这个异常

系统木卫一。FileNotFoundException:无法加载文件或程序集的系统。配置ConfigurationManager,版本=0.0.0.0,区域性=中性,PublicKeyToken=CC7B13FFCD2DD51'。系统找不到指定的文件。文件名:'系统。配置微软的ConfigurationManager,版本=0.0.0.0,区域性=中立,PublicKeyToken=CC7B13FFCD2DD51。服务总线。信息。配置KeyValueConfigurationManager。Microsoft上的CreateNameValueCollectionFromConnectionString(String connectionString)。服务总线。信息。配置KeyValueConfigurationManager。在Microsoft上初始化(字符串连接,可为null的`1 transportType)。服务总线。名称空间管理器。CreateFromConnectionString(字符串连接字符串

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

我做错什么了吗?

共有1个答案

孔阳平
2023-03-14

我假设您正在使用WindowsAzure。服务总线库。它不兼容。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()
 类似资料:
  • 有人能解释一下新发布的WindowsServiceBus(内部部署,而不是Azure)和NServiceBus之间的区别吗? 寻找详细的答案什么窗口SB可能会丢失,因为我很熟悉NSErviceBus可以做什么: 它是真正的服务总线,而不仅仅是使用队列的消息代理吗? 是否可以支持消息多态?(消息子类化其他消息和支持此层次结构的处理程序 长时间运行的进程和相关性 向外扩展

  • 这是我的pojo类 输入json Spring控制器类 我正在控制台中打印日期值,它是这样打印的。这里我得到的时间是错误的,我应该得到时间07:30:04,但我得到的是13:00:04,除了这个一切都很好 请帮我拿这个。

  • 我尝试将Azure服务总线与ApacheQPID和Spring与事务集成。 但Azure服务总线AMQP实现似乎不支持事务。这是真的吗?我没有找到相关信息。 这是我的JMS配置 这是我的spring集成片段: 它与session transact=“false”配合使用,但与session transact=“true”配合使用时会产生错误: QPID跟踪

  • 我正忙着研究Azure服务总线。我想用它来代替我们使用多个请求的系统。 然而,我看不出人们是如何对您排队的消息做出响应的? 我可能误解了服务总线的使用方式吗?这是火灾和忘记类型的消息吗?

  • 我正在编写一个实用程序来监视我们的Azure服务总线主题和订阅。 我可以获得主题详细信息,如名称、队列消息计数和死信消息计数,但我希望获得已处理的消息数。 看来不包含任何属性来获取已处理的消息数。 以前有人试过这么做吗?

  • 我正在使用Azure服务总线队列。但是我不能使用“获取所有队列消息(peek Lock):微软内置于api”从队列中获取所有消息。 有没有办法获取所有队列消息? {"$连接":{"值":{"servicebus_1":{"连接ID":"/订阅/c776fex3-6aec-4722-b099-b054c267b240/资源组/Plugin-Resources/提供者/Microsoft.网络/连接/