Я делаю приложение WPF, и это также сервер WCF, проблема заключается в том, что мне нужно, чтобы ServiceHost был открыт и слушал в порте для клиентов и принимал запросы, как только он начинается, но проблема заключается в том, что если я напишу код, чтобы открыть хост host.open в конструкторе после функции this.InitializeComponent(), он сбой исключается. Если я открываю хост кнопкой и я нажимаю ее после запуска приложения, он работает без проблем.C# WCF host.open failing
Почему это и как я могу решить эту проблему?
Я использую канал tcp.net, я размещаю его в приложении, и исключение, которое я получаю, касается того, что служба уже зарегистрирована.
Исключение на клиентов:
inner exception message :"An existing connection was forcibly closed by the remote host"
error number: 10054
Socket error: System.Net.Sockets.SocketError.ConnectionReset
благодаря
Уолли
конструктор:
public Window1()
{
this.InitializeComponent();
starthost();
}
private void starthost()
{
host = new ServiceHost(typeof (Window1),
new Uri[]{ new Uri("net.tcp://localhost:8000") });
host.AddServiceEndpoint(typeof(IGanador), new NetTcpBinding(), "Contador");
host.open(); //it fails with this line here but not in a button
}
Какой у вас код? Если бы я должен был догадаться, я бы сказал, что звучит так, будто вы кладете код таким образом, чтобы он заканчивался дважды. – tomasr
Я узнал System.ServiceModel вызывает мой конструктор window1 каждый раз, когда он получает запрос клиента, является ли это ошибкой Microsoft? или это ожидаемое поведение? это просто не имеет смысла для меня. – 2009-06-05 20:17:44
Нет, у вас, вероятно, включен режим instanger по умолчанию. Это ожидаемое поведение - каждый запрос от клиента запускает экземпляр сервера. –