Estoy recibiendo un FaultException de un servicio WCF de la siguiente manera cuando se invoca:

2012-04-02 16:26:00.3593|Error|System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: The type initializer for 'vService.CheckService' threw an exception. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.TypeInitializationException: The type initializer for 'vService.CheckService' threw an exception. ----> System.NullReferenceException: Object reference not set to an instance of an object.
   at vService.CheckService..cctor() in d:\working\code\VioletServer\vService\CheckService.cs:line 14
   --- End of inner ExceptionDetail stack trace ---
   at vService.CheckService..ctor()
   at CreatevService.CheckService()
   at System.ServiceModel.Dispatcher.InstanceProvider.GetInstance(InstanceContext instanceContext, Message message)
   at System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext instanceContext, Message request)
   at System.ServiceModel.InstanceContext.GetServiceInstance(Message message)
   at System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
  ...).

La línea 14 de la CheckService.cs es

private static string connStr = ConfigurationManager.ConnectionStrings["violetdb"].ConnectionString;

Lo que no hace la excepción significa en este contexto y cómo puedo solucionarlo?


//CheckService.cs
public class CheckService : ICheckService
{
    private static string connStr = ConfigurationManager.ConnectionStrings["violetdb"].ConnectionString;
    MessageRepository _repo = new MessageRepository(connStr);

    public CheckService(){}

    public CheckService(MessageRepository repo)
    {
        _repo = repo;
    }

    public void SendMessage(string sender, string recipient, string messagetext)
    {
        _repo.DeliverMessage(sender,recipient,messagetext);
    }
}

OriginalEl autor Animesh | 2012-04-02

1 Comentario

  1. 4

    Más probable es que su servicio WCF no tiene una cadena de conexión denominado «violetdb» en su archivo de configuración de aplicación.

    Un TypeInitializerException se produce en esta circunstancia, porque usted tiene un static campo que se está inicializado por delante del tipo de construcción, y debido a que el ConnectionStrings["violetdb"] llamada está volviendo null, y es tirar un NullReferenceException.

    Parte inferior de la línea, compruebe la <connectionStrings> sección del archivo de configuración y asegúrese de que la cadena de conexión existe.

    Tuve la violetdb cadena de conexión en <connectionString> sección en la web.config archivo. Desde que el proyecto es una biblioteca de clase, acabo de añadir un app.config archivo y copiar la cadena de conexión. Todavía se me pone la excepción.
    Donde usted aloja su aplicación? Es auto alojado (es decir, una aplicación de consola, o servicio de windows? Está alojado en IIS?
    Es auto alojado en una aplicación de consola.
    Es posible depurar lo que está sucediendo con el servicio?
    Mateo, I establecer la cadena de conexión manualmente y descubrió que funcionaba. Me resulta extraño que la cadena de conexión no son recogidas de la aplicación.config. Nunca he visto que esto suceda. ¿Tienes información sobre esto?

    OriginalEl autor Matthew Abbott

Dejar respuesta

Please enter your comment!
Please enter your name here