![.NET MVC 3 操作是否应触发 w3wp.exe 来生成进程监视器“PATH NOT FOUND”和“NAME NOT FOUND”错误?](https://linux22.com/image/544005/.NET%20MVC%203%20%E6%93%8D%E4%BD%9C%E6%98%AF%E5%90%A6%E5%BA%94%E8%A7%A6%E5%8F%91%20w3wp.exe%20%E6%9D%A5%E7%94%9F%E6%88%90%E8%BF%9B%E7%A8%8B%E7%9B%91%E8%A7%86%E5%99%A8%E2%80%9CPATH%20NOT%20FOUND%E2%80%9D%E5%92%8C%E2%80%9CNAME%20NOT%20FOUND%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我在 Stack Overflow 上问过这个问题,但有人建议我也在这里问,因为它可能与 IIS 有关:
如果我创建一个开箱即用的 ASP.NET MVC 3 Web 应用程序(非空、Razor、无单元测试)并将其部署到 IIS 7.5 站点(.NET 4、集成管道),则我触发的每个控制器操作都会导致 procmon 中出现大量“未找到名称”和“未找到路径”错误。
w3wp.exe 进程正在尝试访问 MVC 路由引擎应拾取和处理的文件系统位置。这是仅单击一次“登录”链接后 procmon 日志的一小部分:
这是预期的行为吗?我觉得不对。
我之所以遇到这种情况,是因为我的服务器 CPU 利用率高达 100%。我的一个调用发生得非常频繁(导致“找不到路径”错误),以至于它占用了 CPU。 当我在尝试访问的路径上创建文件系统文件夹时,CPU 利用率立即降至 0%(两种情况下,网站上均有约 85 个并发用户)。
答案1
这是正常的。
每个视图文件(.cshtml
使用 C# 的 Razor 视图)可以位于多个众所周知的位置(这允许项目中有多个视图引擎和共享代码)。控制器第一次需要视图时必须找到它。
对同一视图的重复请求不应引起进一步的搜索,但 ASP.NET MVC 运行时将检测更新:检查文件(包括项目程序集)没有未来的日期或触发 AppDomain 重新启动的某些内容。