Мой старый код выглядит так:
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();
Но это не работает для меня, получая ошибку:
Пространство имен не может напрямую содержит элемент или поле