host.Open() выдаёт ошибку из-за состояние Fault от host

205
03 февраля 2018, 22:47

Всем добра!

Имеется такой простенький код, описывающий запуск сервера:

public static void StartServer()
{
    Uri address = new Uri("http://localhost:8010/WorkService");
    WSHttpBinding binding = new WSHttpBinding(SecurityMode.None, true);
    int sizeMb = 100;
    binding.MaxReceivedMessageSize = sizeMb * 1024 * 1024;
    using (ServiceHost host = new ServiceHost(typeof(WorkService), address))
    {
        host.AddServiceEndpoint(typeof(IWorkService), binding, "");
        host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });
        host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
        host.Opening += new EventHandler(host_Opening);
        host.Opened += new EventHandler(host_Opened);
        host.Open();
        Console.ReadLine();
    }
}

Проблема в том, что ошибка вылетает на строчке host.Open();

Лог пишет:

2018.02.02 15:21:49 | Debug: Opening service...

2018.02.02 15:21:49 | Error: Ошибка старта сервера: System.ServiceModel.CommunicationObjectFaultedException: Коммуникационный объект System.ServiceModel.ServiceHost нельзя использовать для связи, так как он находится в состоянии Faulted. в System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)

в System.ServiceModel.ServiceHostBase.System.IDisposable.Dispose()

в GUIServer.MyServerManager.StartServer() в C:\Users\Админ\Desktop\GUI ARP\GUIServer\Connection.cs:строка 37

в GUIServer.MainWindow.btn_onoff_Click(Object sender, EventArgs e) в C:\Users\Админ\Desktop\GUI ARP\GUIServer\Form1.cs:строка 56

Ничего более из кода нету, кроме реализованного WorkService.

В App.config ничего не настраивал.

Перед этим, несколько месяцев назад, работая в VS 13, сервер работал, но в консольном виде. Когда возобновил проект, установил свежую VS 17, перенёс прежде работающий код в WindowsFormsApp, реализовал пользовательский интерфейс -- выдал такую ошибку.

Причём в прежде работающем консольном сервере (код абсолютно тот же), ошибка другая:

System.ServiceModel.AddressAccessDeniedException: "Протоколу HTTP не удалось зарегистрировать URL-адрес http://+:8010/WorkService/. Текущий процесс не имеет прав доступа к этому пространству имен (подробнее см. на веб-странице http://go.microsoft.com/fwlink/?LinkId=70353)."

Answer 1

Проблема оказалось совсем очевидно-неочевидной.

Убрав обработку ошибки и дав VS вылететь, теперь вместо ошибки на счёт состояния сервера Fault, совершенно очевидная ошибка: "Не удалось загрузить библиотеку.."

А ошибку консольной версии на счёт прав, решил обычным запуском VS с правами администратора.

Извините за беспокойство! Честно - долго мучался, не мог найти решение в гугле.

READ ALSO
Замена символов на буквы

Замена символов на буквы

Есть программа,которая должна выводить слово,где буквы заменены на символ '_' и пользователь по 1 букве угадывает этого словоПроблема в том,что...

245
Использование GetFocusedRowIndex в двух разных окнах

Использование GetFocusedRowIndex в двух разных окнах

Имеется строка (появляется после клика по дереву):

217
Как выставить у всех элементов списка значение?

Как выставить у всех элементов списка значение?

как выставить у всех сразу параметр IsEnabled = false

272
Как получить полный список программ в автозагрузке

Как получить полный список программ в автозагрузке

Пытаюсь получить список автозагрузки:

144