valid - xml comments c#
El inicializador de tipo para ''MyClass'' arrojó una excepción (16)
El siguiente es mi código de servicio de Windows. Cuando estoy depurando el código, obtengo el error / excepción:
El inicializador de tipo para ''CSMessageUtility.CSDetails'' lanzó una excepción.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Forms;
using CSMessageUtility;
namespace CS_Data_Trasmmiting_Service
{
public partial class svcCSWinServ : ServiceBase
{
//private string sLogFormat;
//private string sErrorTime;
private Thread new_thread;
Logger logObject = new Logger();
private bool isenable = true;
public svcCSWinServ()
{
InitializeComponent();
logObject.append("Initialize Service " + DateTime.Now.ToString(), 70);
CheckForAlarms();
}
protected override void OnStart(string[] args)
{
try
{
new_thread = new Thread(new ThreadStart(CheckForAlarms));
new_thread.Start();
}
catch
{
}
logObject.append("Service Started successfully " + DateTime.Now.ToString(), 70);
}
protected override void OnStop()
{
try
{
isenable = false;
new_thread.Abort();
}
catch
{
}
logObject.append("Service Stopped successfully " + DateTime.Now.ToString(), 70);
}
void CheckForAlarms()
{
try
{
while (true)
{
//if((DateTime.Now.ToString("HH:mm") == "18:00"))
//{
logObject.append("Start Sending Data " +DateTime.Now.ToString(), 70);
try
{
//SendAllInfo();
string str = CSMessageUtility.CSDetails.createDHSMessageFormat();
Thread.Sleep(2000);
string str1 = CSMessageUtility.CSDetails.createEALMessageFormat();
Thread.Sleep(2000);
string str2 = CSMessageUtility.CSDetails.createProductStatusMessageForamt();
Thread.Sleep(2000);
string str3 = CSMessageUtility.CSDetails.createEODMessageFormat();
Thread.Sleep(2000);
string str4 = CSDetails.createProductReceiptEntryatBOSMessageFormat();
Thread.Sleep(2000);
string str5 = CSMessageUtility.CSDetails.createProductSaleMessageFormat();
Thread.Sleep(2000);
string str6 = CSMessageUtility.CSDetails.createTotalizerExceptionMessageFormat();
Thread.Sleep(2000);
//CSMessageUtility.CSDetails.createDailyCOtransferMessageFormat();
//Thread.Sleep(2000);
}
catch (Exception ee)
{
logObject.append(ee.Message, 70);
}
logObject.append("Finished Sending Data " +DateTime.Now.ToString(), 70);
Thread.Sleep(3000);
//}
//Thread.Sleep(20000);
}
}
catch (Exception ex)
{
logObject.append("Thread Exception: "+ ex.Message + " "+ DateTime.Now.ToString(), 70);
try
{
new_thread.Abort();
}
catch (Exception ex1)
{
logObject.append("Thread Exception: " +ex1.Message + " " + DateTime.Now.ToString(), 70);
}
if (isenable == true)
{
new_thread = new Thread(new ThreadStart(CheckForAlarms));
new_thread.Start();
}
}
}
}
}
Compruebe la propiedad InnerException
de TypeInitializationException
; es probable que contenga información sobre el problema subyacente y exactamente dónde ocurrió.
En mi caso, tuve este error en Logger.Crea dentro de una biblioteca de clase que estaba siendo utilizada por mi aplicación principal (consola). El problema era que había olvidado agregar una referencia a NLog.dll en mi aplicación de consola. Agregar la referencia con la versión correcta de la biblioteca .NET Framework solucionó el problema.
En mi caso, tuve una clase de ayuda que era estática. En esa clase había un método para inicializar un SqlCommand dependiente de las variables. Como esto se llamaba en varios lugares, lo moví a la clase auxiliar y lo llamé según fuera necesario, por lo que este método también era estático. Ahora tenía una propiedad global que era la cadena de conexión en Global.asax que apuntaba a la cadena de conexión en web.config. De forma intermitente, obtengo "El inicializador de tipo para ''Helper'' lanzó una excepción". Si movía el método de la clase Helper a la clase a la que se llamaba, todo estaba bien. La excepción interna se quejó de que el objeto era nulo (clase Helper). Lo que hice fue agregar Using Helper to Global.asax y aunque Global.asax no lo estaba utilizando, esto resolvió el problema.
Encontré este problema debido a una falta de coincidencia entre las versiones de tiempo de ejecución de los ensamblajes. Verifique las versiones de tiempo de ejecución del ensamblaje principal (aplicación de llamada) y el ensamblaje referido
Este problema puede deberse a que una clase intente obtener el valor de una clave en web.config o app.config que no está presente, por ejemplo
La clase tiene una variable estática
private static string ClientID = System.Configuration.ConfigurationSettings.AppSettings["GoogleCalendarApplicationClientID"].ToString();
pero el web.config no contiene la clave ''GoogleCalendarApplicationClientID''
El error se generará en cualquier llamada de función estática o en cualquier creación de instancia de clase
Esto puede suceder si tiene una propiedad de dependencia que está registrada con el tipo de propietario incorrecto (argumento ownerType).
Observe que SomeOtherControl debería haber sido YourControl.
public partial class YourControl
{
public bool Enabled
{
get { return (bool)GetValue(EnabledProperty); }
set { SetValue(EnabledProperty, value); }
}
public static readonly DependencyProperty EnabledProperty =
DependencyProperty.Register(nameof(Enabled), typeof(bool), typeof(SomeOtherControl), new PropertyMetadata(false));
}
He tenido el mismo problema causado por tener dos de las mismas propiedades de configuración (que coincide con la aplicación.config):
[ConfigurationProperty("TransferTimeValidity")]
Me encontré con el mismo problema cuando estaba usando un método estático en una clase Util, tal como lo hizo con ''CSMessageUtility.CSDetails''.
El problema fue que durante la inicialización estática de la clase (usando el constructor estático), el marco también inicializa las variables estáticas (campos) en la clase. Tenía una variable estática que intenta leer valores de app.config, y app.config carecía de las configuraciones respectivas, lo que resulta en una excepción no manejada. Esto dio como resultado obtener la "Referencia del objeto no configurada para una instancia de un objeto". como la excepción interna.
Otra cosa para verificar cuando se lanzan estos errores de inicialización sería verificar si la versión de destino de .NET está instalada en el servidor. Puede hacer clic con el botón derecho en el proyecto y ver qué versión de .NET está orientando a la aplicación.
Otro escenario que podría causar esto es cuando tienes una parte de tu código que llama:
string sParam = **ConfigurationManager.AppSettings["SOME_PARAM"].ToString();
Tenga en cuenta que debe usar el archivo OWSTIMER.EXE.CONFIG
para la configuración del archivo de configuración. Tenía un archivo App.config
que estaba tratando de leer y recibí este error porque en la instanciación de mi instancia de trabajo, tenía una línea en mi código que se refería a Connfiguration.AppSettings
& Configuration.ConnectionStrings
. Solo asegúrate de seguir el camino:
C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/BIN
y coloque su configuración en el archivo OWSTIMER.EXE.CONFIG
.
Si por algún motivo se va el poder o el Visual Studio IDE se cuelga, puede causar este problema dentro de su bin / depurar bin / release ...
Simplemente elimine el contenido y vuelva a compilar (de la experiencia personal cuando mi dedo golpee el botón de reinicio).
Similar a lo que declaró Muhammad Iqbal ... Estaba en un proyecto de VB.NET (también puede ser C #) donde App.config
par clave-valor del App.config
que se hizo referencia por una variable global al Sub Main()
de Module Main
. Por lo tanto, la excepción (y el corte) ocurre en el Module Main
antes del Sub Main()
. Si solo tuviese un punto de quiebre en el Dim
, pero no usualmente rompemos las variables globales. ¿Quizás sea una buena razón para no declarar globales haciendo referencia a App.config? En otras palabras, esto ...
Se produjo una excepción no controlada del tipo ''System.TypeInitializationException'' en el Módulo desconocido. El inicializador de tipo para ''Namespace.Main'' lanzó una excepción.
Es causado por...
App.config
<connectionStrings>
<!--<add name="ConnectionString1" connectionString="..." />-->
Módulo principal
Module Main
Dim cnnString As String = ConfigurationManager.ConnectionStrings("ConnectionString1") ''<-- BREAK HERE (EXCEPTION)
Sub Main()
// main code
End Main
End Module
Tenía una configuración diferente pero relacionada.
Podría ser una sección de configuración personalizada que no se haya declarado en configSections .
Simplemente declare la sección y el error debería resolverse solo.
Tuve un caso como este en un proyecto de WPF. Mi problema estaba en una línea que decía así:
DataTable myTable = FillTable(strMySqlQuery);
Donde FillTable()
devolvió una DataTable basada en una cadena de consulta SQL. Si hice la opción "copiar excepción al portapapeles", creo que fue, y pegué en el Bloc de notas, pude ver el mensaje. Para mí, fue The input is not a valid Base-64 string as it contains a non-base 64 character
.
Mi problema real no era que la cadena de consulta tuviera algo que no debería estar allí, como estaba pensando, porque la string strMySqlQuery = "SELECT * FROM My_Table"
era mi cadena y pensaba que podría ser el *
o _
, pero el real El problema estaba en FillTable()
, donde tuve una llamada a otra función, GetConnection()
que devolvía un objeto OracleConnection
, para abrirlo y recuperar y devolver DataTable. Dentro de GetConnection()
estaba obteniendo los parámetros de app.config
para mi cadena de conexión, y tenía uno de ellos mal llamado, por lo que estaba estableciendo un valor nulo para la contraseña de la cuenta de servicio y no establecía la conexión de DB. Entonces, no siempre es donde el error es exactamente correcto para todas las circunstancias. Lo mejor es sumergirse en la función donde está el error y depurar paso a paso y asegurarse de que todos los valores se llenen con lo que espera.
Yo también enfrenté este error en dos situaciones
Al realizar la redirección de la capa BAL a la capa DAL, enfrenté esta excepción. La excepción interna dice que "Error de referencia de objeto".
Web.Config
clave del archivoWeb.Config
no coincide.
Espero que esto sea útil para resolver tu problema.
The type initializer for ''CSMessageUtility.CSDetails'' threw an exception.
significa que el constructor estático de esa clase lanzó una Excepción, por lo que debe buscar en el constructor estático de la clase CSDetails o en la inicialización de cualquier miembro estático de esa clase.