2012-04-02 11 views
5

jestem otrzymaniu FaultException z usługi WCF w następujący sposób przy wywołaniu:TypeInitializationException: Typ inicjator dla „vService.CheckService” zwrócił wyjątek

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) 
    ...). 

Linia 14 CheckService.cs jest

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

Co oznacza wyjątek w tym kontekście i jak mogę go rozwiązać?


//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); 
    } 
} 

Odpowiedz

4

Najprawdopodobniej usługa WCF nie posiada ciąg połączenia o nazwie „violetdb” w pliku konfiguracyjnym aplikacji.

TypeInitializerException zostaje rzucony w tej sytuacji, ponieważ masz static pole, które jest zainicjowany przed budową typu, a ponieważ wywołanie ConnectionStrings["violetdb"] wraca null i jest rzucanie NullReferenceException.

Podsumuj, sprawdź sekcję <connectionStrings> pliku konfiguracyjnego i upewnij się, że istnieje łańcuch połączenia.

+0

Posiadałem ciąg połączenia 'violetdb' w sekcji' 'w pliku' web.config'. Ponieważ projekt jest biblioteką klas, właśnie dodałem plik 'app.config' i skopiowałem ciąg połączenia. Nadal mam wyjątek. – Animesh

+0

Gdzie udostępniasz swoją aplikację? Czy jest on hostowany (tzn. Aplikacja konsolowa lub usługa systemu Windows? Czy jest hostowana w IIS? –

+0

Jest hostowana w aplikacji konsolowej: – Animesh

Powiązane problemy