Web.config运行时/ legacyCorruptedStateExceptions策略设置不起作用

时间:2019-07-15 13:42:05

标签: c# c++ asp.net .net

我目前正在Visual Studio 2017中的一个解决方案中运行,该解决方案在IIS 10.0.14393中运行,该解决方案的主要项目是.net 4.6框架中的C#,但它也引用了托管和本机C ++项目。

我需要捕获C#代码中本机C ++代码引发的内存访问冲突异常,为此,如果我在特定方法中使用HandleProcessCorruptedStateExceptions属性,则它可以工作,但是我需要以全局方式对整个项目进行操作。为此,文档说在web.config中使用元素足以捕获C#中的那些异常。我在web.config中添加了元素:

  <runtime>
    <legacyCorruptedStateExceptionsPolicy enabled="true" />
  </runtime>

但这并没有改变解决方案中的任何行为,我尝试了多种添加方法,但是结果却是相同的。 我在不同的论坛上进行了调查,看看是否有人遇到相同的问题,而我发现另一个人遇到了相同的问题,但是没有答案...

https://social.msdn.microsoft.com/Forums/en-US/4fa37186-79e7-4270-92b7-afe7e3e15c79/does-webconfig-support-runtimelegacycorruptedstateexceptionspolicy?forum=clr

https://forums.asp.net/t/2017975.aspx?Problem+with+web+config+and+runtime+legacyCorruptedStateExceptionsPolicy+setting

关于如何使用它的任何线索?或任何其他方法来全局捕获托管代码中的本机异常?

谢谢!

1 个答案:

答案 0 :(得分:0)

最后,我问到的是,如果legacyCorruptedStateExceptionsPolicy不在applicationHost.config中,则web.config不支持它。

因此,另一种使该全局性工作对我有用的替代方法是将设置添加到machine.config。

所以只需添加:

<runtime>
  <legacyCorruptedStateExceptionsPolicy enabled="true" />
</runtime>

machine.config 文件 (对于32位%windir%\ Microsoft.NET \ Framework [version] \ config \ machine.config 或64位%windir%\ Microsoft.NET \ Framework64 [version] \ config \ machine.config