У меня интересная проблема.
Я развернул службу Windows на виртуальной машине Azure. Этот компьютер содержит службу Windows, которая будет отправлять сообщения в концентратор событий Azure.
Эта проблема начала возникать только на этой конкретной виртуальной машине и ее сестре (поскольку я настраивал возможность горизонтального масштабирования). Я только подготовил это, и установил сервис на этом. Тот же сервис, когда запускается с моей локальной машины, работает нормально (та же база кода, те же сборки, та же конфигурация ... буквально копирование и вставка задания), и у меня есть доступ к Интернету из виртуальной машины (я проверил через Internet Explorer)
Эта же служба отлично работала на старом лазурном виртуальном компьютере, который я списал. Этот старый vm не был настроен мной, так что, возможно, я пропустил что-то новое, что мне не удалось учесть.
Я не уверен, что именно надеть здесь, но вот соответствующий код, который я использую для отправки.
public class MessageSender
{
private static readonly string EventHubName = ConfigurationManager.AppSettings["EventHubName_v2_0"];
private static EventHubClient _client = EventHubClient.CreateFromConnectionString(ConfigurationManager.AppSettings["EventHubConnectionString"], EventHubName);
/// <summary>
/// Send a message to the EventHub if the app configuration has cloud messaging enabled and the event hub connection strings present
/// </summary>
/// <param name="message">The contents of the message being sent.</param>
/// <param name="clientId">The unique id of the client associated with this message.</param>
public static void Send(string message, string clientId)
{
var eventProperties = new Dictionary<string, string>
{
{Constants.LoggingProperties.MO_MESSAGE_CONTENTS, message},
{Constants.LoggingProperties.MO_MESSAGE_DESTINATION, EventHubName},
{Constants.LoggingProperties.CLIENT, clientId}
};
var startTime = DateTime.UtcNow;
var endTime = null as DateTime?;
try
{
var data = new EventData(Encoding.UTF8.GetBytes(message));
_client.Send(data); // <-- fails here
endTime = DateTime.UtcNow;
}
catch (Exception eventHubEx)
{
Log.Instance.TrackException(eventHubEx);
Console.WriteLine(eventHubEx.Message);
...
}
соответствующий файл app.config
<add key="EventHubConnectionString" value="Endpoint=sb://xxxxx.servicebus.windows.net/;SharedAccessKeyName=xxxx;SharedAccessKey=xxxx" />
<add key="EventHubName_v2_0" value="xxxx" />
эти значения идентичны значениям с моего локального компьютера. Я просто изменил имя файла в соответствии с именем исполняемого файла.
На данный момент я думал только о том, что это может быть проблема с сетью, но я не уверен, что мне нужно проверить, чтобы проверить это, или есть ли способ (простой или нет), чтобы проверить, чтобы обеспечить подключение.
Любые другие идеи будут также развлекаться.
Спасибо за любую помощь, которую вы можете предложить.