Всем добра!
Имеется такой простенький код, описывающий запуск сервера:
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)."
Проблема оказалось совсем очевидно-неочевидной.
Убрав обработку ошибки и дав VS вылететь, теперь вместо ошибки на счёт состояния сервера Fault, совершенно очевидная ошибка: "Не удалось загрузить библиотеку.."
А ошибку консольной версии на счёт прав, решил обычным запуском VS с правами администратора.
Извините за беспокойство! Честно - долго мучался, не мог найти решение в гугле.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть программа,которая должна выводить слово,где буквы заменены на символ '_' и пользователь по 1 букве угадывает этого словоПроблема в том,что...
Имеется строка (появляется после клика по дереву):
как выставить у всех сразу параметр IsEnabled = false