NDepend API - System.UnauthorizedAccessException

时间:2015-01-07 21:27:57

标签: c# asp.net-mvc asp.net-web-api ndepend

我们有两个问题,我们认为可能与NDependAPI

有关

首先,我们正在编写的程序使用NDepend API的IIS工作进程在第一个请求命中时在4Gb +内存上运行,并且每次后续请求时上升约100-400mb。 / p>

其次,我们第一个请求之后的任何请求都会导致生成大量System.UnauthorizedAccessExceptions个名称为CQLinqAsm_[GUID].dll

的文件

查看 C:\ WINDOWS \ TEMP \ ,有一堆文件,例如wz1p0cca.outws1ju0z0.err等。打开文件,它们也会引用一些.cs文件,但它们无处可见。

跳到结论,但从表面上看,这感觉好像没有正确处理某些东西,并且正在锁定这些文件。这可以解决大内存占用和除第一个请求之外的任何异常。

但是,查看NDepend API文档,我看不到任何实现IDisposable的内容,这表明情况可能并非如此。

重现错误并不困难,但这是一个漫长的过程,因此我将尝试描述我们如何使用MVC / NDepend API。

  1. 创建MVC项目后,引用NDepend API并加载它(注意所描述的步骤here),我们通过AJAX请求向WebAPI控制器请求结果。

  2. 然后,该控制器向服务类发送请求,服务类又将其发送到我们的NDepend包装器库。

  3. 在我们的包装器库中,流程与Getting Started program非常相似,只不过我们直接从NDepend proj文件加载规则:

    - >加载项目,并附加Coverage文件(Coverage通过我们的Team City自动化)

    - >通过致电IAnalysisResults或运行IAnalysisResultRef.Load()获取分析结果(IProject.RunAnalysis())。

    - &GT;编译查询(NDepend.Helpers.IEnumerable<string>.CompileMany()

    - &GT;计算JustMyCode(IProject.CodeQueries.CodeQueriesSet.ComputerJustMyCode()

    - &GT;运行查询(IQueryCompiled.IQueryCompiledSuccess.Execute()

    - &GT;返回在页面上呈现的结果

  4. 首次运行时一切正常,但是,如果我们刷新页面,一旦到达NDepend.Helpers.IEnumerable<string>.CompileMany(),它就会开始生成System.UnauthorizedAccessExceptions。

    我们可能非常错误,但任何有洞察力的人都会成为天赐之物。

0 个答案:

没有答案