Asp.net HP强化扫描获取ASP预编译错误

Asp.net HP强化扫描获取ASP预编译错误,asp.net,fortify,pre-compilation,Asp.net,Fortify,Pre Compilation,我正在使用Visual Studio 2012和HP Fortify 4.21以及最新的规则包 代码(C#)与HP Fortify位于同一台机器上,我只使用AWB而不是SCC。当开发人员进行构建时,代码成功构建,但是当我尝试使用Fortify进行扫描时,我得到一个错误 ASP预编译错误 无论是从VS还是从命令行启动,都会发生此错误。日志没有显示错误或警告,但在最后声明没有要存储的内容,因此永远不会创建fpr文件。如果我从Audit Workbench运行扫描,它会崩溃,只是说明它无法创建构建ID

我正在使用Visual Studio 2012和HP Fortify 4.21以及最新的规则包

代码(C#)与HP Fortify位于同一台机器上,我只使用AWB而不是SCC。当开发人员进行构建时,代码成功构建,但是当我尝试使用Fortify进行扫描时,我得到一个错误

ASP预编译错误

无论是从VS还是从命令行启动,都会发生此错误。日志没有显示错误或警告,但在最后声明没有要存储的内容,因此永远不会创建fpr文件。如果我从Audit Workbench运行扫描,它会崩溃,只是说明它无法创建构建ID

我确实找到了一个解决ASP问题的建议(如下),但它失败了,无法创建fpr文件来运行最后一行(进行扫描)

我感谢任何帮助

步骤1:清洁 sourceanalyzer-b“生成ID”-清除

步骤2:翻译/构建 sourceanalyzer-b“构建ID”-Xmx1280M-Xss8M-debug-logfile trans.log devenv“Sample.sln”/Rebuild debug

步骤3:分析
sourceanalyzer-b“Build ID”-Xmx1280M-Xss8M-debug-logfile scan.log-scan-f Results.fpr我遇到了类似的问题。在另一台机器上试一试。有时这会让它起作用。如果没有,那是因为防御错误。与Fortify支持合作帮助我找到了问题所在。虽然我不相信它有什么帮助,但HP在它上面安装了一个bug。这就是说,一旦我知道文件中的什么构造导致了失败,我就能够修改文件以使Fortify完成


抱歉,我没有更多帮助。

问题在于一个或多个ASPX文件。对于dotnetweb表单,ASPX页面不是由visualstudio编译的,而是在服务器上动态编译的。为了增强扫描代码的能力,它正在调用ASPNET_编译器来编译您的ASPX文件。从命令行传递-debug,然后在日志中查找对ASPNET_编译器的调用。您可以复制这些参数,然后在Visual Studio命令提示符下运行它们,以查找导致问题的ASPX文件。请记住,当向ASPNET_编译器传递要编译的目录时,当它发现第一个错误时,它将终止。您可能需要运行几次才能找到所有错误

检查AWB中的分析信息选项卡是否存在相关扫描错误。还可以查看扫描日志文件中的相关条目


如果Eric是正确的,您可能希望将sourceanalyzer放入构建脚本中,以防问题再次出现

我遇到了这个问题,这解决了我的问题

第一步。单击“构建”选项卡 第二步。单击“清洁溶液” 第三步。解决方案资源管理器中很可能出现两个文件夹(bin和obj)。右键单击每一个并将其删除,无论您按什么顺序执行。 第四步。单击“构建”选项卡 第五步。单击“重建解决方案” 第六步。试着再跑一次

额外步骤 第七步。如果仍然无法正常工作,请检查web.config是否存在错误。该项目将生成错误,但会导致预编译失败

第八步。尝试通过转到HP Fortify->Options->Project Settings->Memory(MB)->1024(或更高)来分配更多RAM进行强化。

步骤1。-单击“构建”选项卡 第2步-单击“清洁溶液” 第3步-解决方案资源管理器中出现了2个文件夹(bin、obj)。右键单击
每个1,删除它,顺序不重要。第四步。单击“构建”选项卡第5步。单击“重建解决方案”步骤6。再次尝试跑步强化

额外步骤 步骤7-f仍然不工作,请检查web.config错误。项目生成错误导致预编译失败

步骤8-尝试分配更多ram增强功能,如hp增强->选项->项目设置->内存(mb)->1024(或更高)

下面的链接帮助我解决了问题。

增强SCA 16.20版及之后的版本

从Fortify SCA 16.20版开始,ASP.Net代码不再使用Microsoft
aspnet\u compiler.exe
,因此此特定问题不会再次发生

在增强SCA 16.20版之前

调试预编译器问题的首选方法是将此命令添加到VisualStudio中web项目的生成后事件中,这样错误就会显示在错误列表中

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe" -v / -p $(ProjectDir)
要记住的另一件事是,如果您的文件不是解决方案的一部分,而是web项目目录的一部分,那么aspnet_编译器仍然会读取它们

我发现当开发人员从VisualStudio中排除文件时,这种情况很常见。这不会删除它们。或者,如果他们删除了它们,那么就通过VisualStudio界面删除,而不是从底层源代码存储库中删除,然后在签出时再次下载它们


检查此问题的一个简单方法是打开“在Visual Studio解决方案资源管理器窗口中显示所有文件”。

我已将代码移到其他两台计算机上,并使用相同的问题运行了该代码。谢谢你的建议。非常感谢你的建议,我会试试看是否可以缩小范围。我会记住这一点,谢谢你的建议。我刚刚遇到了这个非常恼人的错误。这个建议立刻奏效了。谢谢