我在我的 c# webservice 应用程序中遇到问题。异常不再在某个时刻处理。应用程序只是停止而没有任何进一步的消息/故障异常。这就是发生的事情:
问题:
- 在方法的 catch 部分,我抛出一个新的异常,其中包含有关异常的附加信息;
- 潜在的异常来自我的应用程序的另一部分;异常的“堆栈”约为 20,但这似乎不是问题;
- 当使用 VS2012 开发服务器(我假设是 32 位)或 32 位模式的 IIS 时,调用方法按预期拾取抛出的异常(最终导致我的 web 服务的 FaultException)
到目前为止我已采取的步骤或其他可能有用的信息:
- 我可以很容易地重现异常;每次我运行我的代码时,它都会在完全相同的点停止工作。不幸的是,我的项目太大/太复杂,无法在这里展示。
- 起初,我认为一方面是 VS2012 开发服务器,另一方面是 IIS 之间的差异导致了我的问题。但是,当我在 IIS 中将应用程序池配置为 32 位时,一切正常。移动到 64 位会导致此行为。
- 内存使用似乎不是问题;在我的应用程序中,我使用(大)xml 输入文件。对这些文件(大小)的更改对我的问题没有影响。
- 我尝试使用为 Web 服务提供的诊断工具。这些并没有真正帮助我,因为我可以看到在 VS2012 中调试我的应用程序时会发生什么(或者我应该说没有发生);
它来了!我的原始代码如下所示:
try
{
//some code here throws an exception
}
catch (Exception ex)
{
throw new Exception("some message", ex); //after this line no activity anymore
}
当我将其更改为:
Exception myex = null;
try
{
//some code here throws an exception
}
catch (Exception ex)
{
myex = new Exception("some message", ex);
return null;
}
finally
{
if (myex!=null) throw myex;
}
我的问题解决了!?有人对这种行为有解释吗?我希望依靠正常的异常处理机制。
另一句话:当我在 try{} 部分之前放置一个“throw new Exception()”时,我的代码也运行良好(但当然,我不希望这样)。
任何人有任何线索?提前致谢!