Как использовать метод stati c для инициализации объекта ServiceBusConnectionStringBuilder и сброса его c# - PullRequest
0 голосов
/ 24 января 2020

Мой старый код выглядит так:

public static async Task SendMessageToServiceBus(string topicName, string message, ILogger log)
{
    try
    {
        ServiceBusConnectionStringBuilder sbc = new ServiceBusConnectionStringBuilder(Environment.GetEnvironmentVariable("ConnectionStringSettingName"));
        sbc.EntityPath = topicName;

        TopicClient tc = new TopicClient(sbc);

        byte[] bytes = Encoding.ASCII.GetBytes(message.ToString());

        await tc.SendAsync(new Message(bytes));

        log.LogInformation($"Successfully published a message to {topicName}");
    }
    catch (Exception exception)
    {
        log.LogInformation("Error: " + exception.ToString());
    }
}

Вместо этого, если я создаю объект ServiceBusConnectionStringBuilder sbc каждый раз, когда я хочу использовать его как состояние c и хочу сбрасывать его при каждом вызове.

public static class testData
{
    public static ServiceBusConnectionStringBuilder sbc = new ServiceBusConnectionStringBuilder(Environment.GetEnvironmentVariable("ConnectionStringSettingName"));

    [FunctionName("test")]
    public static async System.Threading.Tasks.Task RunAsync([ServiceBusTrigger("topic", "sub", Connection = "ConnectionStringSettingName")]string mySbMsg, ILogger log)
    {
        await SendMessageToServiceBus("topicname", mySbMsg, log);

И внутри метода SendMessageToServiceBus сброс sbc как:

testData.sbc.Clear();

Но это не работает для меня, получая ошибку:

Пространство имен не может напрямую содержит элемент или поле

...