За что я не люблю .NET
так это за излишнюю интеллектуальность.
Счас воевал несколько часов с багом в софте, использующем ремотинг.
Оказывается, объекты опубликованные для ремотинга имеют конечное время жизни, и это надо ручками переопределять, потому что если объект не дергают около 10 минут - он сдыхает, и при следующем обращении выдает ошибку "Requested service not found". Поиск по этой ошибке ничего не дает, и понять ее причины просто так не получается.
Я уже даже сниффером обмен между клиентом и сервисом посмотрел, удостоверился, что ошибка в сервисе, windbg с загруженным clr-расширеним(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll) ошибку перехватил, посмотрел стек вызовов и рефлектором внутренности места, где ошибка возникает, изучать начал.
И потом только до меня дошло, что 10 минутный таймаут - это явно где-то сборка мусора покопалась, а потом уже и слова LifetimeService и ILease вспомнились, по которым причина и метод исправления ошибки в гугле находится за пару минут.
Счас воевал несколько часов с багом в софте, использующем ремотинг.
Оказывается, объекты опубликованные для ремотинга имеют конечное время жизни, и это надо ручками переопределять, потому что если объект не дергают около 10 минут - он сдыхает, и при следующем обращении выдает ошибку "Requested service not found". Поиск по этой ошибке ничего не дает, и понять ее причины просто так не получается.
Я уже даже сниффером обмен между клиентом и сервисом посмотрел, удостоверился, что ошибка в сервисе, windbg с загруженным clr-расширеним(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll) ошибку перехватил, посмотрел стек вызовов и рефлектором внутренности места, где ошибка возникает, изучать начал.
И потом только до меня дошло, что 10 минутный таймаут - это явно где-то сборка мусора покопалась, а потом уже и слова LifetimeService и ILease вспомнились, по которым причина и метод исправления ошибки в гугле находится за пару минут.
no subject
no subject
no subject
no subject
Просто из сообщения об ошибке никак не следует что проблема с временем жизни. Да и сервис у меня синглетон и stateless, на самом деле его нужно было Client-Activated сделать, а я что-то перемудрил.
no subject