Проблема с сессией WCF - PullRequest
1 голос
/ 25 июня 2009

Я новичок в WCF и понятия не имею. Используя пример кода, я попробовал WCF через удаленное взаимодействие ...

Он отлично работает в течение нескольких минут, но если я оставляю клиента без доступа к серверу WCF, я получаю исключение, подобное этому ...

Исключение: невозможно подключиться к удаленному серверу.

Внутреннее исключение:

System.Net.Sockets.SocketException: попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не смог ответить 122.165.27.38:80

в System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress)

в System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP)

в System.Net.ServicePoint.ConnectSocketInternal (логическое connectFailure, сокет s4, сокет s6, сокет и сокет, IP-адрес и адрес, состояние ConnectSocketState, IAsyncResult asyncResult, время ожидания Int32, исключение и исключение)

Трассировка стека:

в System.Net.HttpWebRequest.GetRequestStream ()

в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры)

at TeleMailer.TeleMailer.cbxtmuname_SelectedIndexChanged (Отправитель объекта, EventArgs e)

Источник:

Система

Исключение: серверу не удалось обработать запрос. ---> Объект связи, System.ServiceModel.Channels.ServiceChannel, нельзя использовать для связи, поскольку он находится в состоянии Failed.

Внутреннее исключение:

Трассировка стека:

в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (сообщение SoapClientMessage, ответ WebResponse, поток responseStream, логический asyncCall)

в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры)

в TeleMailer.Server.Service.get_path ()

at TeleMailer.TeleMailer.TeleMailer_Load (Отправитель объекта, EventArgs e)

Источник:

System.Web.Services

Но оно не в неисправном состоянии и не закрыто !!!

На самом деле в моем приложении клиент связывается с сервером, который, в свою очередь, связывается с WCF и дает ему работу ...

Сейчас я использую Cassini в качестве сервера. Он отлично работает в течение нескольких минут, но спустя почти десять минут он просто показывает это сообщение об ошибке ...., но если я перезапускаю Cassini, он снова работает нормально в течение нескольких минут и получает проблему ....

Я не могу понять, как он переходит в неисправное состояние, когда он может подключить больше клиентов ....

это потому что время сеанса истекло или как? и если время сеанса истекло, то с какой стороны мой сервер или клиент ???

Любая идея, плз ..........

Я просидел с ним целый день, но ничего не мог отследить !!!

Ответы [ 2 ]

0 голосов
/ 25 июня 2009

"если я оставляю клиента без доступа к серверу WCF, я получаю исключение типа"

Может быть из-за inactivityTimeout, поэтому вы можете увеличить его или избавиться от объекта клиента как можно скорее (попробуйте использовать оператор)

Вы можете установить свойство следующим образом

 <reliableSession ordered="true" inactivityTimeout="00:00:05"
            enabled="false" />
0 голосов
/ 25 июня 2009

Это может быть проблема истечения времени ожидания, связанная с созданием прокси-объекта wcf в клиентском коде.

Похоже, вы создаете прокси-объект при запуске клиента, а затем просто используете его повторно. Этот объект поддерживает соединение с сервером, время ожидания которого истекает через 10 минут.

Лучший способ сделать это - создать новый прокси-объект с оператором using каждый раз, когда вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...