TypeInitializationException:'vService.CheckService'的类型初始值设定项引发了异常

Ani*_*esh 5 c# wcf faultexception

我在调用时从WCF服务收到FaultException,如下所示:

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)
  ...).
Run Code Online (Sandbox Code Playgroud)

CheckService.cs的第14行是

private static string connStr = ConfigurationManager.ConnectionStrings["violetdb"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,异常意味着什么,我该如何解决?


//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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ott 4

您的 WCF 服务很可能在其应用程序配置文件中没有名为“violetdb”的连接字符串。

TypeInitializerException在这种情况下会抛出A ,因为您有一个static在类型构造之前初始化的字段,并且因为ConnectionStrings["violetdb"]调用正在返回null,并且它抛出一个NullReferenceException

最重要的是,检查<connectionStrings>配置文件的部分并确保连接字符串存在。