我正在尝试调试Web服务异常。我在Visual Studio 2010,C#,。net 4.0框架中以调试模式运行客户端和服务。
当我运行客户端并让它调用Web服务时,我得到一个例外:
类型: System.ServiceModel.FaultException`1 [[System.ServiceModel.ExceptionDetail,System.ServiceModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]] 错误消息:“myService.Service”的类型初始化程序引发了异常 来源: mscorlib
但是,该服务没有任何例外。
我得到的堆栈跟踪似乎表明已经进行了调用,并且正在处理回复(即使回复是例外):
服务器堆栈跟踪:
在System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息回复,MessageFault错误,字符串操作,MessageVersion版本,FaultConverter faultConverter)
在System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime操作,ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)
在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)
在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
有人可以指出我需要做些什么来调试它吗?
我目前正在设置Service Trace Viewer工具,看看是否会告诉我更多内容。
答案 0 :(得分:7)
错误消息表明您的服务类myService.Service
具有静态构造函数或字段初始值设定项表达式,其中包含错误,导致未处理的异常在加载服务类型时转义静态ctor。
在调试器下的服务主机进程中,只需在静态ctor和字段初始值设定项表达式上放置断点,然后逐步执行直到发生基础异常。
如果你知道如何使用它,那么Fusion(.NET类加载器)日志也可能会让你到那里。
答案 1 :(得分:2)
错误可能是服务器端缺少依赖性。启动fuslogvw.exe,启用故障记录,重现问题并查找相关的故障记录。