c# – IncludeExceptionDetailInFaults表现不佳
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – IncludeExceptionDetailInFaults表现不佳,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1353字,纯文字阅读大概需要2分钟。
内容图文
![c# – IncludeExceptionDetailInFaults表现不佳](/upload/InfoBanner/zyjiaocheng/807/c98660c1b45d4a37a93bc5ebb320aeeb.jpg)
我有这个简单的测试项目只是为了测试IncludeExceptionDetailInFaults行为.
public class Service1 : IService1
{
public string GetData(int value)
{
throw new InvalidCastException("test");
return string.Format("You entered: {0}", value);
}
}
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
}
在服务的app.config中,我将其设置为true
<serviceDebug includeExceptionDetailInFaults="True" />
在客户端:
try
{
using (var proxy = new ServiceReference1.Service1Client())
Console.WriteLine(proxy.GetData(5));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
这就是我认为的行为:
设置为includeExceptionDetailInFaults = true会将异常详细信息传播到客户端.但我总是得到CommunicationObjectFaultException.
我确实尝试在合同上使用FaultContract(typeof(InvalidCastException))但行为相同,只获取CommunicationObjectFaultException.
使其工作的唯一方法是抛出新的FaultException(new InvalidCastException(“test”));
但是我想IncludeExceptionDetailInFaults = true,上面是自动完成的.
我错过了什么吗?
解决方法:
这是因为您已将服务客户端放在使用块中.
WCF客户端是你在shouldn’t use using中的一个地方,因为它将掩盖“真正的”异常.
技术说明:Dispose调用Close,如果通道已经出现故障(即由于先前的异常),它将始终抛出CommunicationObjectFaultedException,随后将该异常放在堆栈的顶部.清理ICommunicationObject时,为了避免屏蔽异常,您必须首先检查State是否出现故障,如果是,请调用Abort而不是Close.
内容总结
以上是互联网集市为您收集整理的c# – IncludeExceptionDetailInFaults表现不佳全部内容,希望文章能够帮你解决c# – IncludeExceptionDetailInFaults表现不佳所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。