2012-01-26 58 views
0

我有一个web服务,如果合适,发出错误消息。如何在Web服务中使用条件进行调试?

我希望这些错误消息在生产模式下非常有限(“内部崩溃”),并且在调试模式下非常全面。

我想过使用[Conditional("DEBUG")],但它只适用于方法返回void

我是否真的必须在我的错误信息或黑色神秘的魔术中使用#ifdef(如使用所述条件方法告诉web服务对象进入“调试模式”,这对我来说似乎相当难看,因为它是imho不是对象应该知道的东西)?

有没有我不知道的技巧或适当的方法?

+0

你最好在调试模式下在一些sample.cs文件中尝试相同的过程,这样你就可以找到问题... – Madhu

+0

目前没有问题。这是一个设计问题。 – Kheldar

回答

0

您可以在WCF中设置一个行为,捕获所有异常,然后删除大部分错误信息(如果处于生产模式)。您可以使用web.config文件中的标志来设置模式。

+0

是的,我知道一个,但web服务本身正在发送特定的错误信息(客户端要求)。目前我正在做的“黑魔法”技巧似乎比#ifdef更安全一些,但是webconfig解决方案不会改变我的代码捕获和转发的异常,对吧? – Kheldar

+0

您不需要重新抛出实际的异常,您可以将其记录在服务器端,并抛出一个新的FaultException,其细节更少。一种可能性可能是按异常类型和要发送的消息设置字典。如果你没有得到一个匹配,你可以发送“内部崩溃”消息。这样你永远不会发出太详细的信息 – Mharlin

+0

虽然,如果在调试模式下,我想发送详细信息。在使用DEBUG模式时,它最终不是一个异常问题,而是写入对象的东西。我认为一种解决方案是将响应对象传递给条件方法,并通过它进行修改? – Kheldar