WCF 客户端创建问题

Posted

技术标签:

【中文标题】WCF 客户端创建问题【英文标题】:WCF client creation issue 【发布时间】:2011-05-04 10:31:54 【问题描述】:

我正在使用 VS2010 + C# + .Net 4.0 + IIS 7.0 + WCF。当我在下面的代码中创建 WCF 客户端对象实例时,我发现“检查点 1”已记录,但“检查点 2”未记录。但是没有抛出异常(我在整个代码块中捕获了异常,并且没有输出“检查点3”)。

任何想法如何进一步调试以查看 WCF 客户端代理创建中的问题? WCF客户端代理创建中的正常问题是什么(我认为创建只需要创建一个本地内存对象来代表WCF客户端对象实例,不需要真正与远程WCF服务通信,所以应该不会正常失败,请纠正我如果我错了)?可能是一些配置错误?

顺便说一句:下面的代码在 WCF 服务(WCF 服务器端,在 IIS 7.0 中运行/托管)中调用另一个远程 WCF 服务。

try

    MyLogger.Write("check point 1 " );
    Foo.CustomerInfo ci = new Foo.CustomerInfo();
    MyLogger.Write("check point 2");

catch (Exception ex)

    MyLogger.Write("check point 3");
    return;

提前致谢, 乔治

【问题讨论】:

【参考方案1】:

几个想法:

尝试将日志记录放入 Foo.CustomerInfo() 构造函数中 尝试将 end to end tracing 与 Service Trace Viewer 一起使用(通常在 NETFX 4.0 Tools\SvcTraceViewer.exe 中)。 确保您在错误中提供服务返回异常详细信息,以便客户端可以“看到”它们(例如 serviceDebug includeExceptionDetailInFaults="true") 如果您自动生成客户端代理,您仍然可以对其进行编辑并在客户端代理的部分类中添加日志记录

【讨论】:

谢谢zam6ak! “确保您在错误中为您提供服务返回异常详细信息,以便客户可以“看到”它们”——您的意思是如何修改我的课程?您的意思是修改调用远程 WCF 服务 Foo.CustomerInfo 的类,还是修改实现远程 WCF 的类?感谢您提供更多详细信息。 @George2 看看这个帖子***.com/questions/3979010/wcf-exception-handling/…。如果您的服务生成任何错误,您的客户端可以使用 FaultException 捕获它们(如果它是无类型的)。但是,除非您在服务行为中(在服务配置本身,而不是客户端)中设置了includeExceptionDetailInFaults="true",否则客户端将无法显示异常的详细信息。

以上是关于WCF 客户端创建问题的主要内容,如果未能解决你的问题,请参考以下文章

WCF - 创建简单WCF客户端实现与WCF服务端通信

为非托管 C++ 客户端创建 WCF 服务

如何创建 PHP SOAP 客户端以在 SSL 下调用 WCF Web 服务?

WCF服务端开发和客户端引用小结

WCF 客户端代理初始化

以编程方式创建 WCF REST 客户端代理(在 C# 中)