Ошибка времени выполнения инициализатор типа выдал исключение

I see three lines that may possibly be the culprit:


Public Shared sConnection As String = ConfigurationManager.ConnectionStrings("SerialStamperConnectionString").ConnectionString

There are several potential issues here. One, your connection string name («SerialStamperConnectionString») is incorrect. If this name does not match a key in the web.config, then it will return Nothing, causing a NullReferenceException when you attempt to get the value of the ConnectionString property.


Public Shared oConnection As New MySqlClient.MySqlConnection(sConnection)

It’s possible that your connection string above is not configured properly in the web.config, thus returning Nothing as the ConnectionString. If sConnection has been set to Nothing, it’s possible that a NullReferenceException could be thrown my the MysqlConnection constructor.


Dim Response As New HttpResponse(HttpWriter.Null)

If HttpWriter.Null is Nothing then this could also be the source of your problem (for the same reason noted above).


If none of these suggestions seem to be causing the problem, then I would suggest posting more information about your issue (including the stack trace). Offering a million reputation points will not give us any additional information about your code.


ADDENDUM
According to the VB documentation on Shared constructors (and, by extension, members):

Exactly when shared constructors are run is mostly implementation dependent, though several guarantees are provided if a shared constructor is explicitly defined:

  • Shared constructors are run before any instance of a class type is created.
  • Shared constructors are run before any instance members of a structure type are accessed, or before any constructor of a structure type is explicitly called. Calling the implicit parameterless constructor created for structures will not cause the shared constructor to run.
  • Shared constructors are run before any of the type’s shared members are referenced.
  • Shared constructors are run before any types that derive from the type are loaded.
  • A shared constructor will not be run more than once during a single execution of a program.

9.3.2 Shared Constructors

You may find it useful to create a Shared constructor in which to initialize your shared fields:

Public Shared sConnection As String
Public Shared oConnection As MySqlClient.MySqlConnection

Shared Sub New()
    Dim l_connectionString = ConfigurationManager.ConnectionStrings("SerialStamperConnectionString")
    If l_connectionString IsNot Nothing Then
        sConnection = l_connectionString.ConnectionString
        oConnection = New MySqlClient.MySqlConnection(sConnection)
    Else
        ' What to do here?
    End If
End Sub

This will not solve your problem, most likely, but it may make it easier to find and to handle (null string, etc.)

Alexandr_7

46 / 20 / 5

Регистрация: 29.12.2015

Сообщений: 1,778

1

Инициализатор типа «» выдал исключение. Не могу найти причину проблемы

04.05.2019, 18:49. Показов 21497. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте.
Мне C# выдает исключение на исполнение статического метода CreateSettingsGames();
Сообщения исключения:

Код

System.TypeInitializationException: "Инициализатор типа "AL7_Play_Sega_Games.src.AL7_SClassAd" выдал исключение."
ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: contents

Проблема в том что куда бы я не поставил точку останова в модуле AL7_SClassAd она не действует. Такое чувство что исключение случается сразу как я вызываю метод. Вот код метода:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (File.Exists(Application.StartupPath + @"ReadGames.txt") == true)
            {
                var FNGames = File.ReadAllLines(Application.StartupPath + @"ReadGames.txt");
                if (FNGames.Length <= 0) return;
 
                for (var i = 0; i < FNGames.Length; i++)
                {
                    if (FNGames[i].Length <= 0) continue;
 
                    var splFNGames = FNGames[i].Split('|');
 
                    SettingsGames.Games.Add(new AL7_Class_Game(Application.StartupPath + PathSettingsGames + splFNGames[0], splFNGames[1]));
                }
 
                FNGames = null;
 
                File.WriteAllLines(Application.StartupPath + @"ReadGames.txt", FNGames);
            }

Инициализатор типа "" выдал исключение. Не могу найти причину проблемы

Помогите решить проблему



0



46 / 20 / 5

Регистрация: 29.12.2015

Сообщений: 1,778

04.05.2019, 18:55

 [ТС]

2

Так. Решил проблему. Я пытался сохранить массив строк которому присвоенно null
У меня это происходило в другой библиотека. Вопрос тока какого фига C# не может показать на ошибку если она происходит в другой библиотеке. Дело в том что библиотека написана мной. Она является как отдельный проект но связан с главным.

А определил я это так. Просто инициализатор библиотеки был у меня прям в статическом классе. Я это вынес в отдельный метод и тогда уже смог определить что ошибка находится в библиотеке. Ну и дальше догадался почему.



0



Эксперт .NET

6403 / 3940 / 1578

Регистрация: 09.05.2015

Сообщений: 9,241

04.05.2019, 19:02

3

Обычно в InnerException видно где конкретно ошибка.



0



Эксперт .NET

17231 / 12681 / 3323

Регистрация: 17.09.2011

Сообщений: 20,955

04.05.2019, 23:34

4

Цитата
Сообщение от Alexandr_7
Посмотреть сообщение

какого фига C# не может показать на ошибку если она происходит в другой библиотеке

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



1



After installing .NET 4.0, I am now getting an exception on this statement:

 if (mainForm.versionNumber.Contains("BETA"))  

This is how versionNumber is defined:

public static string versionNumber = "1.1.1 " + compileDate.ToString("dd-MMM-yyyy");

and the run-time errorr is «TypeInitializationException». What changed from .NET v3.5 to 4.0 that would cause this? And how do I fix it?

UPDATE: here is the exception detail:

> System.TypeInitializationException was unhandled   Message=The type
> initializer for 'Media_Inventory_Manager.mainForm' threw an exception.
> Source=PragerMediaInventoryManager  
> TypeName=Media_Inventory_Manager.mainForm   StackTrace:
>        at Media_Inventory_Manager.Prager.Main() in D:Prager SoftwareMedia Inventory ManagerProgram.cs:line 36
>        at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
>        at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
>        at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>        at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
>        at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
>        at System.Threading.ThreadHelper.ThreadStart()   InnerException: System.FormatException
>        Message=The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.
>        Source=mscorlib
>        StackTrace:
>             at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
>             at System.DateTime.Parse(String s, IFormatProvider provider)
>             at Media_Inventory_Manager.mainForm..cctor() in D:Prager SoftwareMedia Inventory ManagerMain Form.cs:line 38
>        InnerException:

After installing .NET 4.0, I am now getting an exception on this statement:

 if (mainForm.versionNumber.Contains("BETA"))  

This is how versionNumber is defined:

public static string versionNumber = "1.1.1 " + compileDate.ToString("dd-MMM-yyyy");

and the run-time errorr is «TypeInitializationException». What changed from .NET v3.5 to 4.0 that would cause this? And how do I fix it?

UPDATE: here is the exception detail:

> System.TypeInitializationException was unhandled   Message=The type
> initializer for 'Media_Inventory_Manager.mainForm' threw an exception.
> Source=PragerMediaInventoryManager  
> TypeName=Media_Inventory_Manager.mainForm   StackTrace:
>        at Media_Inventory_Manager.Prager.Main() in D:Prager SoftwareMedia Inventory ManagerProgram.cs:line 36
>        at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
>        at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
>        at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>        at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
>        at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
>        at System.Threading.ThreadHelper.ThreadStart()   InnerException: System.FormatException
>        Message=The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.
>        Source=mscorlib
>        StackTrace:
>             at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
>             at System.DateTime.Parse(String s, IFormatProvider provider)
>             at Media_Inventory_Manager.mainForm..cctor() in D:Prager SoftwareMedia Inventory ManagerMain Form.cs:line 38
>        InnerException:

Alexandr_7

46 / 20 / 5

Регистрация: 29.12.2015

Сообщений: 1,771

1

Инициализатор типа «» выдал исключение. Не могу найти причину проблемы

04.05.2019, 18:49. Показов 19743. Ответов 3

Метки нет (Все метки)


Здравствуйте.
Мне C# выдает исключение на исполнение статического метода CreateSettingsGames();
Сообщения исключения:

Код

System.TypeInitializationException: "Инициализатор типа "AL7_Play_Sega_Games.src.AL7_SClassAd" выдал исключение."
ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: contents

Проблема в том что куда бы я не поставил точку останова в модуле AL7_SClassAd она не действует. Такое чувство что исключение случается сразу как я вызываю метод. Вот код метода:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (File.Exists(Application.StartupPath + @"ReadGames.txt") == true)
            {
                var FNGames = File.ReadAllLines(Application.StartupPath + @"ReadGames.txt");
                if (FNGames.Length <= 0) return;
 
                for (var i = 0; i < FNGames.Length; i++)
                {
                    if (FNGames[i].Length <= 0) continue;
 
                    var splFNGames = FNGames[i].Split('|');
 
                    SettingsGames.Games.Add(new AL7_Class_Game(Application.StartupPath + PathSettingsGames + splFNGames[0], splFNGames[1]));
                }
 
                FNGames = null;
 
                File.WriteAllLines(Application.StartupPath + @"ReadGames.txt", FNGames);
            }

Инициализатор типа "" выдал исключение. Не могу найти причину проблемы

Помогите решить проблему

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

46 / 20 / 5

Регистрация: 29.12.2015

Сообщений: 1,771

04.05.2019, 18:55

 [ТС]

2

Так. Решил проблему. Я пытался сохранить массив строк которому присвоенно null
У меня это происходило в другой библиотека. Вопрос тока какого фига C# не может показать на ошибку если она происходит в другой библиотеке. Дело в том что библиотека написана мной. Она является как отдельный проект но связан с главным.

А определил я это так. Просто инициализатор библиотеки был у меня прям в статическом классе. Я это вынес в отдельный метод и тогда уже смог определить что ошибка находится в библиотеке. Ну и дальше догадался почему.

0

Эксперт .NET

6266 / 3894 / 1567

Регистрация: 09.05.2015

Сообщений: 9,186

04.05.2019, 19:02

3

Обычно в InnerException видно где конкретно ошибка.

0

Эксперт .NET

16742 / 12494 / 3285

Регистрация: 17.09.2011

Сообщений: 20,722

04.05.2019, 23:34

4

Цитата
Сообщение от Alexandr_7
Посмотреть сообщение

какого фига C# не может показать на ошибку если она происходит в другой библиотеке

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

1

Я вижу три строки, которые могут быть виновниками:


Public Shared sConnection As String = ConfigurationManager.ConnectionStrings("SerialStamperConnectionString").ConnectionString

Здесь есть несколько потенциальных проблем. Во-первых, ваше имя строки подключения («SerialStamperConnectionString») неверно. Если это имя не совпадает с ключом в web.config, то будет возвращено Nothing, вызывая исключение NullReferenceException при попытке получить значение ConnectionString имущество.


Public Shared oConnection As New MySqlClient.MySqlConnection(sConnection)

Возможно, указанная выше строка подключения неправильно настроена в файле web.config, поэтому возвращается Nothing как ConnectionString. Если для sConnection установлено значение Nothing, вполне возможно, что в моем конструкторе MysqlConnection может быть выброшено исключение NullReferenceException.


Dim Response As New HttpResponse(HttpWriter.Null)

If HttpWriter.Null is Nothing то это также может быть источником вашей проблемы (по той же причине, что и выше).


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


ДОПОЛНЕНИЕ
Согласно документации VB по общим конструкторам (и, соответственно, членам):

Точное время запуска общих конструкторов в основном зависит от реализации, хотя предоставляется несколько гарантий, если общий конструктор определен явно:

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

9.3.2 Общие конструкторы

Вам может оказаться полезным создать конструктор Shared, в котором можно инициализировать ваши общие поля:

Public Shared sConnection As String
Public Shared oConnection As MySqlClient.MySqlConnection

Shared Sub New()
    Dim l_connectionString = ConfigurationManager.ConnectionStrings("SerialStamperConnectionString")
    If l_connectionString IsNot Nothing Then
        sConnection = l_connectionString.ConnectionString
        oConnection = New MySqlClient.MySqlConnection(sConnection)
    Else
        ' What to do here?
    End If
End Sub

Скорее всего, это не решит вашу проблему, но может облегчить поиск и обработку (пустая строка и т. д.).

When I try to run my tests I get TypeInitializationException.

The piece of code;
var moc = new Mock<ITankBatteryUnitOfWorkProvider>(); moc.Setup(s => s.GetUnitOfWork()).Returns(() => null); <-- Here

Exception:
OneTimeSetUp: System.TypeInitializationException : Инициализатор типа "HMI.Test.Report.AbsReportJobTest" выдал исключение. ----> System.TypeInitializationException : Инициализатор типа "Moq.ProxyFactory" выдал исключение. ----> System.TypeInitializationException : Инициализатор типа "Moq.CastleProxyFactory" выдал исключение. ----> System.IO.FileLoadException : Не удалось загрузить файл или сборку "Castle.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) ----> System.IO.FileLoadException : Не удалось загрузить файл или сборку "Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Exception doesn't have a stacktrace

Moq 4.8.2
Castle.Core 4.2.1

Thank you!

Требуется подключить базу данных, чтобы была возможность пользоваться программой и с другого компьютера. Нужно проверять имя пользователя и пароль с данными из бд. Однако появляется ошибка:

Необработанное исключение типа «System.TypeInitializationException» в System.Data.dll».

Как исправить?

string dirPath = new FileInfo($"{Assembly.GetAssembly(GetType()).Location}").DirectoryName;
string dbName = "login_database.mdf";    
string connectionString = $@"Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename={dirPath}{dbName};Integrated Security=True";
SqlDataAdapter sda = new SqlDataAdapter("select * from Table_dict where user='"+text_login.Text+"'and password ='"+text_pass.Text+"'", connectionString);
DataTable dt = new DataTable();
sda.Fill(dt);
if (string.IsNullOrEmpty(text_login.Text))
{
    MessageBox.Show("Пожалуйста, введите логин и пароль!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    text_login.Focus();
    return;
} 
try
    if(dt.Rows.Count==1)
    {
        main m = new main();
        m.Show();
    }
    else
    {
        MessageBox.Show("Пожалуйста, проверьте правильность написания логина и пароля.");
    }
}
catch (Exception EX)
{
    MessageBox.Show(EX.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}}

Message=Инициализатор типа «System.Data.SqlClient.SqlConnection» выдал исключение.
Source=System.Data
TypeName=System.Data.SqlClient.SqlConnection

Message=Инициализатор типа «System.Data.SqlClient.SqlConnectionFactory» выдал исключение.
Source=System.Data
BareMessage=Система конфигурации не прошла инициализацию

Вероятнее всего, ошибка в App.config. Строка подключения :

 <system.data>    
      <DbProviderFactories>
          <clear />
          <add name="SQL Data Provider" invariant="Sql.Data.SqlClient"
          description=".Net Framework Data Provider for SQL"
          type="Sql.Data.SqlClient.SqlClientFactory, Sql.Data, 
        Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
      </system.data>    

Проблема

При попытке запустить надстройку Point Layout в Revit появляется сообщение об ошибке.

  • Ошибки могут возникать при нажатии кнопки «Получить лицензию» или при экспорте точек.

Ошибка (для продолжения необходимо выполнить ознакомление):

Инициализатор типа для ‘<модуль>’ бросил исключение.

Ошибка 1

Сообщение об ошибке компоновки точки

При нажатии на вкладку «Подробности», когда появляется запрос «Ошибка необрабатываемого исключения», отображается следующее сообщение:

System.IO.FileLoadException: Не удалось загрузить файл или сборку GTPS_Utils& или одну из зависимостей. Недопустимый указатель (исключение из HRESULT: 0x80004003 (E_POINTER) —> System.NullReferenceException: Не указана ссылка на экземпляр объекта. at Stabiplan.ExportExcel.Client.UserinterfaceLayer.Platform.RVExportExcelApplication.HandleAssemblyResolve(Object sender, ResolveEventArgs) at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly, String assemblyFullName)

Причины

Надстройка блокирует работу функции компоновки точек.

Решение

Для устранения этой проблемы удалите надстройку, которая вызывает ошибку.

  • Известные надстройки, о которых мы сообщали:
    • Средства повышения производительности
    • Запущены надстройки для экспорта и импорта Excel от компании Trimble
    • Синоним термина «шкаф»
    • Компоненты MEP: электрические схемы
    • Компоненты MEP: проемы для MEP
    • Компоненты MEP: экспорт и импорт в Excel

Определение надстройки, которая вызывает ошибку

  1. Переместите все надстройки в папку надстройки Point Layout во временную папку на компьютере.
  2. Добавьте одну надстройку обратно в папку надстроек.
  3. Перезапустите Revit и попробуйте получить лицензию.
  4. Повторите операцию для надстройки, пока ошибка не появится снова.

Продукты

Revit; Макет точки;

В проекте WPF был такой случай. Моя проблема была на следующей строке:

DataTable myTable = FillTable(strMySqlQuery);

Где FillTable() возвращает DataTable на основе строки запроса SQL. Если бы я сделал опцию «исключение копирования в буфер обмена», я думаю, что она была, и вклеена в «Блокнот», я мог видеть сообщение. Для меня это было The input is not a valid Base-64 string as it contains a non-base 64 character.

Моя фактическая проблема заключалась не в том, что в строке запроса было что-то, чего не должно было быть, как я думал, потому что string strMySqlQuery = "SELECT * FROM My_Table" была моей строкой и считала, что это может быть * или _, но фактическая проблема была в FillTable(), где у меня был вызов другой функции, GetConnection(), которая вернула объект OracleConnection, чтобы открыть его и получить и вернуть DataTable. Внутри GetConnection() я получал параметры app.config для моей строки подключения, и у меня было одно из них, поэтому оно устанавливало значение null для пароля учетной записи службы и не делало соединение с БД. Так что не всегда, где ошибка в точности соответствует всем обстоятельствам. Лучше всего погрузиться в функцию, где ошибка, и отлаживать шаг за шагом, и обеспечить, чтобы все значения заполнялись тем, что вы ожидаете.

Всем привет, столкнулся с такой проблемой при запуске ЦА шарика

выскакивает вот такое сообщение:

Ошибка выполнения

Описание: На сервере возникла ошибка приложения. Текущая особая настройка ошибок для этого приложения не позволяет отобразить сведения об ошибке данного приложения.

Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег <customErrors> в файле конфигурации «web.config», который находится в корневом каталоге текущего веб-приложения.
В теге <customErrors> следует задать атрибут «mode» со значением «RemoteOnly». Для разрешения просмотра сведений об ошибке на удаленных компьютерах задайте для «mode» значение «Off».

<!-- Файл конфигурации Web.Config -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly"/>
    </system.web>
</configuration>

Примечания: Отображаемую в данный момент страницу ошибок можно заменить на пользовательскую страницу ошибок, изменив атрибут «defaultRedirect» тега конфигурации <customErrors> приложения
таким образом, чтобы он содержал URL-адрес пользовательской страницы ошибок.

<!-- Файл конфигурации Web.Config -->

<configuration>
    <system.web>
        <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

перед тем как данная проблема появилась пытался исправить ошибку :  Kerberos Event ID 4

Клиент Kerberos получил ошибку KRB_AP_ERR_MODIFIED с сервера spb-srv-sp02$. Использовалось целевое имя HTTP/spb-srv-sp02.домен.ru. Это означает, что целевому серверу не удалось расшифровать билет, предоставленный клиентом. Это возможно,
когда целевое SPN-имя зарегистрировано на учетную запись, отличную от учетной записи, используемой конечной службой. Убедитесь, что целевое SPN-имя зарегистрировано только на учетную запись, используемую сервером. Эта ошибка также
может возникать, если пароль целевой службы отличается от пароля, заданного для нее в центре распространения ключей Kerberos. Убедитесь, что пароли в службе на сервере и в центре распространения ключей совпадают. Если имя сервера задано не полностью
и конечный домен (домен.RU) отличается от домена клиента (домен.RU), проверьте эти два домена на наличие учетных записей серверов с одинаковыми именами или используйте для идентификации сервера полное имя.

следывал по инструкции:

https://support.microsoft.com/ru-ru/help/832769/how-to-configure-a-windows-sharepoint-services-virtual-server-to-use-kerberos-and-ntlm-authentication

cscript adsutil.vbs set w3svc/1/root/NTAuthenticationProviders «Negotiate,NTLM»

После применения  этой команды  перестал запускаться ЦА… подскажите как исправить как
запустить ЦА???


Продукты, к которым относятся сведения из этой статьи.

13 августа 2013 г. Эта статья обновлена. Мы рекомендуем установить обновление для системы безопасности, упомянутое в разделе «Решение».

В некоторых случаях при работе приложений Microsoft .NET Framework 4, использующих узел с частичным доверием, могут возникать ошибки. Функция SQL Server CLR (SQLCLR) в Microsoft SQL Server 2012 использует такой узел с частичным доверием. (Она позволяет писать хранимые процедуры с помощью управляемого кода.) Поэтому это может повлиять на приложения, созданные с помощью SQL Server 2012.

Нам известно, что эта проблема влияет на работу Microsoft System Center 2012 Configuration Manager и Microsoft Dynamics CRM 2011.

Например, у вас может быть установлен клиент .NET Framework 4.0, использующий пространство имен System.Data.SqlClient на сервере частичного доверия, например, SQL Server 2012 или службы IIS. При вызове метода SqlConnection.Open вы получите следующие исключения.

System.TypeInitializationException: инициализатор типа «System.Data.SqlClient.SqlConnection» выдал исключение. —> System.TypeInitializationException: инициализатор типа «System.Data.SqlClient.SqlConnectionFactory» выдал исключение. —> System.TypeInitializationException: инициализатор типа «System.Data.SqlClient.SqlPerformanceCounters» выдал исключение. —> System.MethodAccessException: методу «System.Configuration.TypeUtil.CreateInstanceRestricted(System.Type, System.Type)» не удалось получить доступ к методу «System.Diagnostics.SwitchElementsCollection..ctor()».

Следующие сценарии описывают, как эта общая проблема может проявляться.

Сценарий 1

Ошибка репликации баз данных между сайтами и синхронизации точки обновления программного обеспечения в System Center 2012 Configuration Manager. Клиентские запросы местоположения содержимого не возвращают точки распространения в Microsoft System Center Configuration Manager 2007.

Дополнительные сведения об этой проблеме см. на следующем веб-сайте корпорации Майкрософт:

Сценарий 2

Существует подключаемый модуль в Microsoft CRM 2011. В этом сценарии при вызове методов определенных классов в пространстве имен System.Diagnostics может появиться следующее исключение.

System.MethodAccessException: методу «System.Configuration.TypeUtil.CreateInstanceRestricted(System.Type, System.Type)» не удалось получить доступ к методу «System.Diagnostics.AssertSection..ctor()».

Проблема

Эта проблема возникает из-за неправильной оптимизации функций в. NET Framework 4.

Причина

Для решения проблемы установите новое обновление для системы безопасности. 2840628.

Решение

Актуальность

Информация в данной статье относится к следующим продуктам.

  • Microsoft .NET Framework 4 при использовании в:

    • Windows 7 с пакетом обновления 1 (SP1)

    • Windows Server 2008 R2 с пакетом обновления 1 (SP1)

    • Windows Vista с пакетом обновления 2 (SP2)

    • Windows Server 2008 с пакетом обновления 2 (SP2)

    • Windows XP с пакетом обновления 3 (SP3)

    • Windows Server 2003 с пакетом обновления 2 (SP2)

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Возникла проблема с запуском приложения, написанном на C# (WPF) с подключением к БД MySql при помощи ADO.NET Entities. Ошибка следующая:


System.TypeInitializationException не обработано пользовательским кодом
  HResult=-2146233036
  Message=Инициализатор типа "System.Data.Entity.Internal.AppConfig" выдал исключение.
  Source=EntityFramework
  TypeName=System.Data.Entity.Internal.AppConfig
  StackTrace:
       в System.Data.Entity.Internal.AppConfig.get_DefaultInstance()
       в System.Data.Entity.Internal.LazyInternalConnection..ctor(DbContext context, String nameOrConnectionString)
       в System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
       в AccessToClientsDB.clientdbEntities..ctor() в c:UsersAndreyDesktop...ClientServiceClientAccessToClientsDBclientdb.Context.cs:строка 18
       в AccessToClientsDB.AccessToClientsDB..ctor() в c:UsersAndreyDesktop...ClientServiceClientAccessToClientsDBAccessToClientsDB.cs:строка 13
       в GUI.MainWindow..ctor() в c:UsersAndreyDesktop...ClientServiceClientGUIMainWindow.xaml.cs:строка 26
  InnerException: System.Configuration.ConfigurationErrorsException
       HResult=-2146232062
       Message=Система конфигурации не прошла инициализацию
       Source=System.Configuration
       BareMessage=Система конфигурации не прошла инициализацию
       Line=0
       StackTrace:
            в System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e)
            в System.Configuration.Internal.InternalConfigRoot.OnConfigRemoved(InternalConfigEventArgs e)
            в System.Configuration.Internal.InternalConfigRoot.RemoveConfigImpl(String configPath, BaseConfigurationRecord configRecord)
            в System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
            в System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
            в System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
            в System.Configuration.ConfigurationManager.GetSection(String sectionName)
            в System.Data.Entity.Internal.AppConfig..ctor()
            в System.Data.Entity.Internal.AppConfig..cctor()
       InnerException: System.Configuration.ConfigurationErrorsException
            HResult=-2146232062
            Message= Неизвестный раздел конфигурации userSettings. (C:UsersAndreyAppDataLocalGUIGUI.vshost.exe_Url_ev1ciwvrswduwtnpzk5phoigckrk3o4m1.0.0.0user.config line 3)
            Source=System.Configuration
            BareMessage= Неизвестный раздел конфигурации userSettings.
            Filename=C:UsersAndreyAppDataLocalGUIGUI.vshost.exe_Url_ev1ciwvrswduwtnpzk5phoigckrk3o4m1.0.0.0user.config
            Line=3
            StackTrace:
                 в System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
                 в System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
                 в System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
                 в System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e)
            InnerException:

Происходит эта ошибка в классе, написанном средой, подозреваю, что класс этот написан в процессе создания модели. Вот, собственно, его код:

//------------------------------------------------------------------------------
// <auto-generated>
//     Этот код создан по шаблону.
//
//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
// </auto-generated>
//------------------------------------------------------------------------------

namespace AccessToClientsDB
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class clientdbEntities : DbContext
    {
        public clientdbEntities()
            : base("name=clientdbEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<company> company { get; set; }
        public virtual DbSet<department> department { get; set; }
        public virtual DbSet<record> record { get; set; }
        public virtual DbSet<telephone> telephone { get; set; }
    }
}

Да, модель я добавлял в класс с пространством имен AccessToClientsDB
Исключение выбивает вот на этом этапе:

public clientdbEntities()
            : base("name=clientdbEntities")

App.config


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

  <!--<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>-->
  <entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    </providers>
  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.9.8.0" newVersion="6.9.8.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
<connectionStrings><add name="clientdbEntities" connectionString="metadata=res://*/clientdb.csdl|res://*/clientdb.ssdl|res://*/clientdb.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=Andrew;password=150468;persistsecurityinfo=True;database=clientdb&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>

packages.config


<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
  <package id="EntityFramework.ru" version="6.1.1" targetFramework="net45" />
  <package id="MySql.Data" version="6.9.8" targetFramework="net45" />
  <package id="MySql.Data.Entities" version="6.8.3.0" targetFramework="net45" />
  <package id="MySql.Web" version="6.9.8" targetFramework="net45" />
</packages>

Единственный момент, который, судя по всем форумам, мог бы смущать — это разные версии EntityFramework, EntityFramework.ru в референсах и в файле пакетов. Но я попробовал поменять в файле на те же, что в референсах и это не помогло исправить ошибку. Еще немного смущает, что в пакетах есть только EntitIES, но нет EntitY, в то время, как в референсах есть Entity.EF6, a EntitIES нет вообще. Не знаю, от чего это зависит, но добавлял пакеты из NuGet, следуя ответу на этот пост:
https://stackoverflow.com/questions/22031269/enable-entity-framework-6-for-mysql-c-in-winforms-of-microsoft-visual-studio
Хотя, если память не обманывает, мог добавить один раз, кроме EntitY пакета еще и EntitIES.

  • Ошибка времени выполнения значение было недопустимо малым или недопустимо большим для int32
  • Ошибка времени выполнения входная строка имела неверный формат что это значит
  • Ошибка времени выполнения входная строка имела неверный формат readln
  • Ошибка времени выполнения unable to read beyond the end of the stream
  • Ошибка времени выполнения system indexoutofrangeexception индекс находился вне границ массива стек