.net c#异常处理在64位模式下失败

Dir*_*irk 12 .net c# exception-handling 32bit-64bit

我在c#webservice应用程序中遇到问题.异常不再处理某一点.应用程序只需在没有任何进一步的消息/故障异常的情 这是发生的事情:

问题:

  • 在方法的catch部分中,我抛出一个新的Exception,其中包含有关异常的附加信息;
  • 基础异常来自我的应用程序的另一部分; 例外的"堆栈"大约是20,但这似乎不是一个问题;
  • 当使用VS2012开发服务器(我假设是32位)或32位模式的IIS时,调用方法会按预期获取抛出的异常(最终导致我的webservice的FaultException)

我到目前为止采取的步骤或其他可能有用的信息:

  • 我可以很容易地重现异常; 每次运行我的代码时,它都会在完全相同的点停止工作.不幸的是,我的项目太大/太复杂,不能在这里呈现.
  • 起初我假设VS2012开发服务器与IIS之间存在差异,导致我的问题.但是,当我在IIS中将我的应用程序池配置为32位时,一切正常.移至64位会导致此行为.
  • 内存使用似乎不是问题; 在我的应用程序中我使用(大)xml输入文件.对这些文件(大小)的更改对我的问题没有影响.
  • 我尝试使用为webservices提供的诊断工具.这些并没有真正帮助我,因为我可以看到在VS2012中调试我的应用程序时会发生什么(或者我应该说不会发生);

它来了!我的原始代码如下所示:

try
{
  //some code here throws an exception
}
catch (Exception ex)
{
  throw new Exception("some message", ex); //after this line no activity anymore
}
Run Code Online (Sandbox Code Playgroud)

当我将其更改为:

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;
}
Run Code Online (Sandbox Code Playgroud)

我的问题解决了!?有没有人对这种行为有解释?我希望依靠正常的异常处理机制.

另一句话:当我在try {}部分之前放置一个'throw new Exception()'时,我的代码运行正常(但当然,我不希望这样).

任何人都有任何线索?提前致谢!

gma*_*ser 0

这个问题可能与平台本身有关。您可以将其报告给 Microsoft Connect,希望您能尽快得到答复。