w3wp诊断报告:以调试模式编译的模块列表

时间:2017-04-04 20:39:41

标签: c# asp.net performance iis

我正在查看我在生产服务器中生成的进程转储的报告。 Asp.Net应用程序在发布模式下编译并部署到Azure应用程序服务。但是,当我查看生成的报告时,它有一个部分'在调试模式下编译的模块列表'我看到很多App_Web_xxxxxxx(其中x是随机字符),另一个名字为Microsoft_Web_Compilation_Snapshots

如果我在发布模式下编译我的应用程序,是否正常将所有这些模块编译为调试模式?那些App_Web_xxxxxxx模块是什么,它们是预编译的视图还是什么?

1 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题。查看您的web.config中的<system.codedom>;将/optimize+ /debug-添加到compilerOptions属性。

在此更改之后,程序集来自

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

编辑: 要具体回答您的问题,这些是您的应用程序中的JIT视图。在运行时,它将编译这些视图。似乎无论您的<system.compilation>设置如何,它都会在调试模式下编译它们。以下我发现的一些讨论似乎很相关:https://forums.asp.net/t/1625220.aspx?Razor+compilation

如果你需要了解更多这些编译标志,你可以找到它们here(对于c#反正)。