Я использую лазурный эмулятор. Я хочу слушать порт 4702 в моей рабочей роли. Когда у меня есть экземпляры count = 1, он не генерирует исключение. Но если установить экземпляры count в 2, то он пытается открыть на порт 4702 два раза (запуск запускается два раза) и генерируется исключение: «Обычно разрешено только одно использование каждого адреса сокета (протокола/сетевого адреса/порта) Как правильно прослушивать входящие соединения в рабочей роли azure?Слушатель ролики розницы Azure на двух экземплярах
тип InputEndpoint является "Input" Конфигурация:
<WorkerRole name="GpsRerouterWorker" vmsize="Small">
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
<Endpoints>
<InputEndpoint name="reroutei4702" protocol="tcp" port="4702" localPort="4702" />
</Endpoints>
<LocalResources>
<LocalStorage name="DiagnosticStore" sizeInMB="20000" cleanOnRoleRecycle="false" />
</LocalResources>
</WorkerRole>
код:
public class WorkerRole : RoleEntryPoint
{
public override void Run()
{
System.Net.IPEndPoint IPEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["gpsreroutei4702"].IPEndpoint; TcpListener listener = new TcpListener(IPEndpoint);
listener.Start();
Logger.Log("Server is running");
while (true)
{
Logger.Log("Waiting for connections...");
try
{
var tcpClient = await listener.AcceptTcpClientAsync();
await HandleConnectionAsync(tcpClient);
}
catch (Exception exp)
{
Logger.Log(exp.ToString());
}
}
}
public override bool OnStart()
{
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
return base.OnStart();
}
}
UPD: Обновленный код. теперь это работает.