7

刚刚使用 IIS 7.5 在我公司的服务器上部署了我的 WCF 服务,一切似乎都运行良好。但是当我设置我的客户端应用程序并添加对服务器的服务器引用然后使用此代码时。

ServerReference.ServiceClient client = new ServerReference.ServiceClient();

var s = client.GetBrand("Audi", false);

我得到一个异常,说“对象引用未设置为对象的实例”。s 对象不应为空(我们在 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)

有什么建议么 ??PS 托管 WCF 服务的 CPU 没有视觉工作室,所以我无法通过它进行调试

4

4 回答 4

2

正如我在评论中建议的那样,确保您可以使用WcfTestClient获取数据。这既确认了服务正在运行,又几乎对方法调用进行了单元测试,以确保它从客户端的角度工作。

其次,(除非您将其淡化以在 SO 上发布)使用正确的 WCF 调用方法来避免此类问题。一旦你引入了一个依赖,预测失败总是一个好主意(尽管你的服务、客户端的互联网连接或其他)。

在不了解您的项目的任何其他信息的情况下,很难描述如何修复它。诸如旧 WSDL、错误配置的 *.config、服务器上未公开的端点以及其他问题等因素可能是问题的根源,但鉴于您所展示的内容,我不知道它可能是什么。

如果您能提供更多信息,我将很高兴用我可能有的更多建议来更新我的答案。现在,看看在服务器上启用 WCF 跟踪,以便您可以回顾日志并查看服务器端是否有任何问题(除了逐步执行客户端的调用和检查)。

于 2012-06-21T16:54:03.207 回答
1

您不必通过它进行调试。只需在 web.config 中添加 WCF 跟踪设置,您就可以获得有关原始错误的信息。请参阅http://msdn.microsoft.com/en-us/library/ms733025.aspx

于 2012-06-21T16:54:16.250 回答
0

我在我的项目中遇到了同样的问题,在我的情况下,我发现异常发生在服务构造函数中,但只有在我调用任何方法时才会触发。

于 2013-11-09T07:20:05.897 回答
0

配置跟踪源以发出跟踪和设置跟踪级别,设置活动跟踪和传播以支持端到端跟踪关联,并设置跟踪侦听器以访问跟踪。

Windows Communication Foundation (WCF) 为诊断跟踪输出以下数据: 跨应用程序所有组件的进程里程碑跟踪,例如操作调用、代码异常、警告和其他重要处理事件。跟踪功能出现故障时的 Windows 错误事件。请参阅WCF 中的事件日志记录

于 2016-11-17T18:02:25.150 回答