刚刚使用IIS 7.5在我公司的服务器上部署了我的WCF服务,一切似乎都运行正常。但是当我设置我的客户端应用程序并向服务器添加服务器引用然后使用此代码时。
ServerReference.ServiceClient client = new ServerReference.ServiceClient();
var s = client.GetBrand("Audi", false);
我得到一个异常,说“对象引用未设置为对象的实例”。 s对象不应该为null(我们尝试在localhost上的服务,我们在它工作的同一个项目中拥有它)。
你看着stackstrace,它看起来像这样。
21.6.2012 16:16:29
对象引用未设置为对象的实例。
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
有什么建议吗? P.S托管WCF服务的CPU没有可视化工作室,所以我无法通过它进行调试
答案 0 :(得分:2)
正如我在评论中建议的那样,请确保您可以使用WcfTestClient获取数据。这两者都证实了服务正在运行,并且几乎对方法调用进行单元测试,以确保它从客户端的角度运行。
其次,(除非你把它浇水到SO上发布)使用correct WCF call method来避免这些问题。一旦引入依赖关系,最好预测失败(尽管您的服务,客户端的互联网连接或其他方式)。
在不了解您的项目的任何其他内容的情况下,很难描述如何修复它。旧的WSDL,错误配置的* .config,服务器上未暴露的端点以及其他问题等因素可能是问题的根源,但鉴于您所展示的内容,我不知道它可能是什么。
如果您能提供更多信息,我将很乐意通过我可能提供的任何建议更新我的答案。现在,看一下服务器上的enabling WCF tracing,这样你就可以回顾一下日志,看看服务器端是否有任何问题(除了单步调用客户端的电话和检查)。 / p>
答案 1 :(得分:1)
您不必通过它进行调试。只需在web.config中添加WCF跟踪设置,即可获得有关原始错误的信息。见http://msdn.microsoft.com/en-us/library/ms733025.aspx
答案 2 :(得分:0)
我在我的项目中遇到同样的问题,在我的情况下,我发现异常发生在服务构造函数中,但它只在我调用任何方法时触发。
答案 3 :(得分:0)
配置跟踪源以发出跟踪并设置跟踪级别,设置活动跟踪和传播以支持端到端跟踪关联,并设置跟踪侦听器以访问跟踪。
Windows Communication Foundation(WCF)输出以下数据以进行诊断跟踪: 跟踪应用程序的所有组件的过程里程碑,例如操作调用,代码异常,警告和其他重要的处理事件。 跟踪功能出现故障时的Windows错误事件。请参阅Event Logging in WCF。