在VS 2010中使用WCF服务进行调试时,我遇到了一些非常奇怪的行为。这是一个片段:
public MapFileInfo[] ListFiles(string user, string pass)
{
return s.ListFiles(user, pass);
}
如果身份验证失败,我想要一个例外来冒泡到主应用程序。但是,在调试模式下实际发生的是召回 s.ListFiles(user, pass)
。因此,为了进一步检验我的理论,即VS正在做一些可疑的事情,我只是做了以下事情:
try
{
return s.ListFiles(user, pass);
}
catch (SoapHeaderException e)
{
throw e;
}
瞧,当我进入(F8)而不是通过调用堆栈将它抛出到调用语句时,throw e
被调用,结束,然后结束。
之前有人经历过这种奇怪的行为吗?因为它,我无法通过我的应用程序进行调试。另外,我可以单步执行明显抛出异常的服务代码并返回到调用语句(s.ListFiles),所以我知道这种情况正在发生。
答案 0 :(得分:0)
我认为这是理想的行为。如果没有使用Exception-Handler,VS将停止在抛出调用并等待您的操作,如果您继续调试,VS将尝试再次调用错误的函数(毕竟,您可能已经更改了某些内容以使其消失与此同时)。
所以,似乎你在ListFiles
的调用函数中没有Exception-Handler。
如果您想在整个应用程序中使用通用错误处理程序,请为事件AppDomain.CurrentDomain.UnhandledException
和Application.ThreadException
添加处理程序。