gpt4 book ai didi

wcf - 单点触控 : WCF services and Exception handling

转载 作者:行者123 更新时间:2023-12-04 15:26:54 25 4
gpt4 key购买 nike

我正在使用由 Visual Studio 创建的 WCF 服务。

我正在调用诸如 GetDataAsync(param) 来检索数据。在 GetDataCompleted 处理程序中,我使用检索到的数据。

该服务有效。有时我无法检索数据。在这种情况下,发生了如下异常:

Exception in async operation: System.Net.ProtocolViolationException: The number of bytes to be written is greater than the specified ContentLength.
at System.Net.WebConnectionStream.CheckWriteOverflow (Int64 contentLength, Int64 totalWritten, Int64 size) [0x00038] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/WebConnectionStream.cs:546

怎么可能捕捉到类似的异常?应用程序仍在工作,但在控制台打印异常。我认为异常来自 Channel 或其他东西。

先感谢您。

最佳答案

你的问题是:

How is it possible to catch a similar (red: ProtocolViolationException) exception?



在您的服务应用程序中,捕获 ProtocolViolationException使用以下代码:
catch (ProtocolViolationException ex)
{
// do something with your exception here
// for example, throw a FaultException that will be communicated to the client
throw new FaultException<ProtocolViolationException>
(ex, new FaultReason(ex.Message), new FaultCode("Sender"));
}

为了将其正确发送回客户端,您需要在操作契约(Contract)上设置一个附加属性,例如:
[OperationContract()] 
[FaultContract(typeof(ProtocolViolationException))]

然后,在客户端,您可以预测此特定异常并优雅地处理它,例如:
catch (FaultException<ProtocolViolationException> ex) 
{
Console.WriteLine("FaultException<>: " + ex.Detail.GetType().Name + " - " + ex.Detail.Message);
}

这是否回答你的问题?

关于wcf - 单点触控 : WCF services and Exception handling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com