TypeInitializationException: L'initialiseur de type pour 'vService.CheckService' a généré une exception
Je reçois un FaultException à partir d'un service WCF comme suit lorsqu'elle est invoquée:
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 ligne 14 de CheckService.cs est
private static string connStr = ConfigurationManager.ConnectionStrings["violetdb"].ConnectionString;
Ce n'est l'exception dans ce contexte et comment puis-je le résoudre?
//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);
}
}
OriginalL'auteur Animesh | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Plus probable que votre service WCF ne pas avoir une chaîne de connexion nommée "violetdb" dans son fichier de configuration d'application.
Un
TypeInitializerException
est jeté dans cette circonstance, parce que vous avez unstatic
champ qui est en cours d'initialisation à l'avance du type de construction, et parce que leConnectionStrings["violetdb"]
appel est de retournull
, et il est en train de jeter unNullReferenceException
.Bas de ligne, cochez la
<connectionStrings>
la section de votre fichier de configuration et de s'assurer que la chaîne de connexion existe.violetdb
chaîne de connexion dans<connectionString>
dans la sectionweb.config
fichier. Depuis que le projet est une bibliothèque de classe, j'ai juste ajouté unapp.config
fichier et copié la chaîne de connexion. J'ai toujours l'exception.Où en êtes-vous l'hébergement de votre application? Est-il hébergé soi-même (c'est à dire une application de console, ou d'un service windows? Il est hébergé dans IIS?
Il est auto-hébergé dans une application console.
Est-il possible de déboguer ce qui se passe avec le service?
Matthieu, j'ai mis la chaîne de connexion manuellement et a constaté que ça marchait. Je trouve bizarre que la chaîne de connexion n'a pas ramassé à partir de l'app.config. Je n'ai jamais vu cela se produire. Avez-vous aperçu?
OriginalL'auteur Matthew Abbott