Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当访问ASP.NET MVC控制器时,为什么w3wp.exe进程会查看文件系统?_Asp.net_Asp.net Mvc 2 - Fatal编程技术网

当访问ASP.NET MVC控制器时,为什么w3wp.exe进程会查看文件系统?

当访问ASP.NET MVC控制器时,为什么w3wp.exe进程会查看文件系统?,asp.net,asp.net-mvc-2,Asp.net,Asp.net Mvc 2,我只是想知道这是否是正常的行为,因为我对ASP.NETMVC还相当陌生。当我通过procmon监控站点使用情况时,我看到以下内容: 7:19:17.0053886 PM w3wp.exe 3992查询打开C:\www\inetpub\ControllerName.mvc\ActionName未找到路径 (此站点设置为在IIS6/MVC2上运行-扩展.mvc的原因) 当点击ControlName.mvc\ActionName URL时会发生这种情况 扩展名.mvc映射到ASP.NET运行时,该运行

我只是想知道这是否是正常的行为,因为我对ASP.NETMVC还相当陌生。当我通过procmon监控站点使用情况时,我看到以下内容:

7:19:17.0053886 PM w3wp.exe 3992查询打开C:\www\inetpub\ControllerName.mvc\ActionName未找到路径

(此站点设置为在IIS6/MVC2上运行-扩展.mvc的原因)


当点击ControlName.mvc\ActionName URL时会发生这种情况

扩展名
.mvc
映射到ASP.NET运行时,该运行时使用ASP.NET mvc引擎处理请求。它做了以下工作:

  • 启动路由引擎
  • “路由器”查看请求中的文件是否存在于文件系统中。如果是,它将其返回给IIS,IIS将呈现静态文件
  • 如果不存在,ASP.NET路由将执行适当的操作
  • 因此,您的日志是第2步的结果。通常情况下,不应执行此操作

    我知道它运行的一个原因:您已设置为
    true
    。 您需要将其设置为false(默认设置)


    另一个观察结果是,w2wp在
    inetpub
    的根目录中查找文件,这意味着应用程序位于网站的根目录中,而不是虚拟目录中。 如果不是这样,那么您应该检查应用程序在磁盘上的位置和网站的结构。可能只是发生了一些冲突。

    您是否已取消选中IIS中的“验证文件是否存在”框

    它位于网站属性->主目录->配置->通配符应用程序映射->现有的aspnet映射中


    不幸的是,上的屏幕截图勾选了该框,而文本显示“取消勾选标记为验证文件存在的复选框”

    这有助于理解asp.net MVC中的流程或路由。我在global.asax.cs文件中将该值设置为false,procmon显示它仍在查找文件路径。这很有趣。我更新了答案,给你另一个线索。但是,您能否确认确切的日志条目、应用程序在磁盘上的位置以及应用程序是否在网站的根目录中运行?我看不出有任何问题。正如您所说的Dmitry,在步骤2中,路由引擎会查看文件是否存在,从而创建QueryOpen事件。否则,它如何在不查找文件的情况下检查文件是否存在?@ZippyV,问题是当
    RouteExistingFiles=false
    (默认情况下)时,它不应该查找文件。对于.mvc处理程序,它是未选中的。我没有使用通配符映射。请注意,如果勾选该框,则它将是IIS进程而不是w3wp。