HttpListenerException в рабочей роли при запуске прослушивания - PullRequest
0 голосов
/ 30 марта 2012

Я переношу консольное приложение C # в Azure.Мое приложение использует HttpListener для прослушивания HTTP-запроса на определенный порт.Когда я пытаюсь выполнить следующий тестовый код локально в роли «Рабочий», я получаю исключение (аналогично распечатке на экране ComputeEmulator):

HttpListenerException - «Процесс не может получить доступ к файлу, потому чтоон используется другим процессом ".

Примечание. Я настроил порт на 2020 в файле конфигурации службы.Я также заметил, что порт, полученный из RoleEnvironment show 2020, но должен ли он показывать другой порт, поскольку он должен быть переназначен на другой порт, отличающийся от настроенного номера внешнего порта?

// ========== Test code starts ==============

string ipAddress = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Ecard"].IPEndpoint.Address.ToString();
int port = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Ecard"].IPEndpoint.Port;

string uri = @"http://" + ipAddress + ":" + port + "/";

try
{

    httpListener = new HttpListener();
    httpListener.Prefixes.Add(uri);
    httpListener.Start();

}
catch (Exception e)
{
    Trace.WriteLine(e.Message);
}

// Test code ends.

Я бы действительноценим вашу помощь.

1 Ответ

0 голосов
/ 04 апреля 2012

Хотя я не очень разбираюсь в Azure, я немного знаю о http.sys / HttpListener, поэтому вот моя попытка помочь: httpListener.Prefixes.Add (ur) завершается ошибкой, если процесс не выполняется от имени администратора или пользователя с повышенными правами контекст. Еще один способ сделать Prefixes.Add () без сбоев - это заранее задать URL-адрес, на котором идет речь, с помощью утилиты netsh.exe или программно с HttpAPI, которые также будут работать в контексте администратора / пользователя с повышенными правами. Если операционная среда Azure не поддерживает ACL (предоставляет права доступа) для URL-адреса пользовательского контекста, в котором выполняется ваш код, вам может потребоваться поиск других вариантов, кроме использования HttpListener.

...