Приложение .NET не работает на одном ПК, исключение, которое невозможно обработать - PullRequest
6 голосов
/ 06 мая 2010

У меня есть приложение .NET 2.0, в котором нет ничего особенного.До вчерашнего дня он работал на на каждом ПК, на который я устанавливал или копировал его, независимо от того, был ли установлен 2.0, 3.0, 3.5 или 3.5 SP1, независимо от того, был ли это Win2000, XP или даже Win7 (всего 100+машины).

Вчера я выполнил свою обычную процедуру установки и хотел запустить ее один раз, чтобы проверить, все ли работает ... а это не так.Программа сильно упала, оставив меня с неинформативным "Вы хотите сообщить об этой ошибке?"Диалог.Проблема является исключением в подпрограмме Main(String[] args) моего приложения.

В программе просмотра событий отображается следующая запись:

  Event Type: ErrorEvent
  Source: .NET Runtime 2.0 Error Reporting
  Event Category: None
  Event ID: 5000
  Date: 05/05/2010
  Time: 16:09:09
  User: N/A
  Computer: myClientPC
  Description:
  EventType clr20r3, P1 apomenu.exe, P2 1.4.90.53, P3 4bdedea4,
  P4 system.configuration, P5 2.0.0.0, P6 4889de74, P7 1a6, P8 136,
  P9 ioibmurhynrxkw0zxkyrvfn0boyyufow, P10 NIL.

Ну ... отличная информация.После долгих поисков я наконец смог получить дополнительную информацию об этом исключении (добавив обработчик для UnhandledExceptions непосредственно в My.MyApplication.New(), Application.Designer.vb):

  System.Configuration.ConfigurationErrorsException

  Configuration system failed to initialize

     at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
     at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
     at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
     at System.Configuration.ConfigurationManager.GetSection(String sectionName)
     at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
     at System.Net.Configuration.SettingsSectionInternal.get_Section()
     at System.Net.Sockets.Socket.InitializeSockets()
     at System.Net.Sockets.Socket.get_SupportsIPv4()
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.get_HostName()
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.RegisterChannel(Boolean SecureChannel)
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
     at MyAppNameHere.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Line 81.

И в этот момент я застрял...У меня нет идей.Я не использую какую-либо систему конфигурации из фреймворка (нет ссылки на System.Configuration, и никогда не было сгенерированного или распространенного MyAppnameHere.exe.config, и я не видел эту ошибку раньше).Я также нашел отчет об ошибке в Microsoft (Google Cache) об этой ошибке (хотя в другом контексте).Но, как кажется, они даже не будут смотреть на это.

Каждая помощь очень ценится!

Редактировать: Я использую Visual Studio 2008 Prof ..Сбой происходит в Release- и Debug-Build на клиентском компьютере.Боюсь, что отладка приложения непосредственно на этом компьютере исключена, 300+ миль, и у них есть только два компьютера для работы.

Edit2: Другие приложения .NET работают нормально.

Edit3: После того, как Андрей указал на это, я также посмотрел на Внутреннее исключение (я всегда забываю, что эта вещь существует):

  System.Configuration.ConfigurationErrorsException

  Unknown configraution directive "system.serviceModel". (c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config line 145)

     at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
     at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
     at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
     at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)

Я удалилэтот раздел и все теперь работает, как и ожидалось ... но теперь меня преследует один вопрос: почему работали другие приложения?

Ответы [ 7 ]

6 голосов
/ 30 октября 2012

На машине с Windows 2008 R2 у нас были похожие симптомы. Мы отрицаем, что установка .NET Framework 3.5.1 из функциональных возможностей решила нашу проблему. В этом была разница между двумя машинами, где одна работала, а другая (отсутствующая 3.5.1) не была.

3 голосов
/ 06 мая 2010

Эта ошибка означает, что с файлом .config что-то не так. Это может быть файл конфигурации приложения или файл machine.config.

Я бы предложил удалить / переустановить .net на этом компьютере.


Еще одна вещь, которую стоит попробовать - посмотреть, сможет ли пользователь запускать ваше приложение с повышенными правами (запуск от имени администратора). Система конфигурации может пытаться получить доступ к файлу, на который у пользователя нет прав. Если они могут работать от имени администратора, выясните, к каким файлам обращается система конфигурации, а затем попросите пользователя разрешить права своей учетной записи на эти файлы.

1 голос
/ 06 мая 2010

Судя по стеку вызовов, выглядит так, как если бы канал был неправильно настроен по непонятной причине. Когда вы смотрите на это по-другому, возможно, что-то изменилось в сети без вашего ведома - после всего, что вы сделали скажем, это сработало, я просто не могу не думать, что в системном конфигурационном файле (machine.config) неправильная настройка, возможно, из-за разрешений?

Общесистемная конфигурация находится в папке Windows глубоко внутри папки .NET ... Я думаю, среда выполнения не запустилась должным образом ... Вы пытались перезапустить службу оптимизации среды выполнения .NET?

0 голосов
/ 18 октября 2014

Я получал эту ошибку, когда я развернул свое приложение на производственном сервере, на моей локальной машине для разработки ошибки не возникает. Итак, я объяснил причину: мой сервер имеет операционную систему x64, мое приложение было скомпилировано с платформой x86 по умолчанию, изменено на параметр «Любой процессор» и больше ошибок нет !!!

0 голосов
/ 06 мая 2010

Я бы предположил, что на машине неправильно установлена ​​платформа.

Попробуйте удалить, а затем переустановить .Net.

0 голосов
/ 06 мая 2010

Вы пытались удалить файл "... \ Documents and Settings \ \ Local Settings \ Application Data \ ... \ user.config", как описано в http://support.microsoft.com/kb/956762/en-gb? путь может отличаться в более поздних версиях Windows.

0 голосов
/ 06 мая 2010

Похоже, что ваше приложение пытается настроить сокет, возможно, на клиентском ПК установлен брандмауэр, который блокирует сокет, или может быть предотвращен запуск кода из-за какого-либо программного обеспечения безопасности.Вы пытались запустить свой код как администратор и все программное обеспечение безопасности отключено?

...