![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
В многопоночном приложении с использованием технологи Remoting по TCP каналу возникает исключение, которое невозможно отладить. Просто возникает окно и ничего с ним сделать нельзя, в каком месте кода - не показывает.
А имено: ArgumentNullException в системной функции CopyToManaged. Ей передается нулевой параметр "source". Ниже детали исключения: ------------------------------------------------ System.ArgumentNullException was unhandled Message="Значение не может быть неопределенным.\r\nИмя параметра: source" Source="mscorlib" ParamName="source" StackTrace: в System.Runtime.InteropServices.Marshal.CopyToManaged(IntPtr source, Object destination, Int32 startIndex, Int32 length) в System.Net.Sockets.AcceptOverlappedAsyncResult.PostCompletion(Int32 numBytes) в System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) в System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) ------------------------------------------------ Буду благодарен за любую информацию как найти ошибку. Скорее всего где-то у меня потоки криво написаны. Спасибо. |
|||
|
||||
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Вот глядите, убрал все что можно. Оставил только примитивный ремоутинг по TCP.
Есть три сборки: Сервер, Клиент и Объект связи. Этот объект я делал сначала в одной сборке с сервером, потом вылелил в одтельную сборку - ни на что это не влияет. Работает так. Запускаю MyServer.exe, затем запускаю MyClient.exe Пока нормально. Затем я закрываю MyClient.exe и запускаю его еще раз. И тут приходит ArgumentNullException.
|
|||
|
||||
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Помогите же! Какие бы примеры из сети я ни брал на тему ремоутинга по TCP, на каком бы компьютере ни запускал (XP, Vista), какую бы версию FrameWork ни использовал (от 2.0 до 3.5) - всё всегда кончается отдим и тем же: ArgumentNullException в CopyToManaged!!!!
|
|||
|
||||
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Сообщаю дополнительные сведения об ошибке "ArgumentNullException в CopyToManaged"
1. Ошибка проявляется только на MS Vista включая SP1 и SP2. На XP и на Windows 7 работает НОРМАЛЬНО 2. Ошибка проявляется только при использовании канала TCP. На канале IPC работает НОРМАЛЬНО 3. Некоторые примеры (особенно в виде консольного приложения) проявляют ошибку по-другому: первое обращение к серверу зависает, последующие проходят нормальрно. 4. Общим является то, что ПЕРВОЕ обращение и ПОСЛЕДУЮЩИЕ происходят по-разному. То есть: -Либо при первом обращении ОК, при втором ArgumentNullException -Либо при первом обращении - тишина, при втором и последующих - ОК 5. Желающие могут попробовать. Вот ссылка на классический пример (причем довольно старый) от самой Microsoft: http://msdn.microsoft.com/en-us/library/ms973857.aspx Кто скомпилирует под Вистой - увидит сам. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
opozdaika, взял твой пример, вбил в студию, запустил под 2008-м сервером - та же виста - все работает. В примере аттач с исходниками и с бинарниками. Позапускай их. С некоторой вероятностью у тебя просто битый инсталл висты. UAC включен/выключен? Firewall? Windows Defender? Порт менять пробовал на другой?
ЗЫ Если у тебя что-то "не работает" - ататч полные исходники, а не только текст cs. Всем лень тратить пол часа на разбирательство с чужой проблемой. Тем более что Steve Maine уже потратил - и не смог воспроизвести. Присоединённый файл ( Кол-во скачиваний: 5 )
RemotingTest.zip 51,72 Kb |
|||
|
||||
| opozdaika |
|
||||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
To PashaPash:
Спасибо большое. Твои примеры ведут себя на моем компе точно так же, как и мои примеры. На втором компе с Вистой - точно то же. Твой консольнрый пример ведет себя по типу Б (первый раз виснет), оконный пример - по тпиу А (второй раз валится)
Виста фирменная, лицензионная. Но гарантийный срок прошел, поэтому в техподдержку я обратиться не могу. Причем интегрирован был SP1, затем я обновился до SP2. Горячие обновления тоже включены
Включен. Попробую отключить, но надежды мало
Пробовал и так и так
Его у меня нет
пробовал
Прости, не знал, что здесь так принято
Ты и там побывал |
||||||||||||||||
|
|||||||||||||||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Зачем сразу "принято" - просто так подсказывает здравый смысл Доберусь вечером до домашней висты, проверю. UPD: у меня в коде System.Net.Sockets.AcceptOverlappedAsyncResult.PostCompletion(Int32 numBytes) вызова System.Runtime.InteropServices.Marshal.CopyToManaged вообще нет. Проверь что .net пропатчен до упора. Поставь 3.5 SP1, и апдейты к нему. Это сообщение отредактировал(а) PashaPash - 7.7.2009, 19:41 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Проверил на Vista SP1 + .NET 3.5 SP1. Не повторяется. Скорее всего дело в драйверах/железе/специфических настройках. Попробуй скачать 30-дневную виртуалку-триал (http://www.microsoft.com/downloads/details.aspx?familyid=C2C27337-D4D1-4B9B-926D-86493C7DA1AA&displaylang=en), и проверить под ней.
|
|||
|
||||
| opozdaika |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
To PashaPash :
Скажи пожалуйста, а те экзешники, которые ты выложил, они под какой фреймворк? Как я понимаю, как раз под 3.5 SP1? А если скомпилируешь под 2.0? Ведь на момент выхода майкросовтовского примера, который мы по существу и компилируем, сущестовал пожалуй только 1.1 Я сейчас не компилирую сам, а тестирую на твоих бинарнкиах, как полученных на независимой стороне. Есть ли мне в таком случае смысл апгрейдить фреймворк? И где взять последнее обновление?
Твои экзешники у меня падают, причем на двух вистах с РАЗНЫХ дистрибутивов.
Буду сегодня и завтра пробовать различные дистрибутивы висты на тестовой машине. И сразу после установки висты буду запускать твой пример. Спасибо за помощь! To All Был бы благодарен, если бы кто-то еще просто запустил два файла у себя на висте. Просто посмотреть, будет валиться или нет. 1. Берешь zip-архив от PashaPash (см. его пост чуть ниже) 2. Из архива вытаскиваешь папку RemotingTest\Binaries к себе на винт 3. Запускаешь файл WindowsFormsServer.exe - появляется голое окно (это сервер) 4. Запускаешь файл WindowsFormsClient.exe - появляется еще одно голое окно (это клиент) 5. Ждешь секунд 5, потом закрываешь клиентское окно. Пока все нормально 6. Ждешь еще секунд 5, запускаешь WindowsFormsClient.exe во второй раз. Вот тут-то и наступает момент истины. Два окна либо спокойненько продолжают быть на экране, либо оба очень сильно обижаются. Спасибо. Присоединённый файл ( Кол-во скачиваний: 4 )
_________________.jpg 60,54 Kb |
||||||
|
|||||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Они под 2.0 - точнее, Remoting есть только под 2.0. Последний сервис пак - http://www.microsoft.com/downloads/details...;displaylang=en. |
|||
|
||||
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Многострадальная проблема резрешилась!!!
Виновник - клиент ИСА (MS Firewall Client for ISA Server v 4.0) Он у нас на всех машинах, поэтому падало везде. Но только на Висте. Как же так? MS Remoting конфликтует с MS Firewall на MS Vista? Спасибо за участие! PS. И кстати, WCF (замена ремоутинга) тоже валится на висте в присутствии ISA Client Это сообщение отредактировал(а) opozdaika - 17.7.2009, 14:23 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |