IIS重新编译ASP NET网站

时间:2009-05-06 23:17:30

标签: asp.net iis compiler-construction web

我正在和一位朋友讨论当你将一个新文件放入虚拟目录时IIS的作用。

他告诉我,当你把文件放在网站的任何地方时,IIS会重新编译整个网站,我认为当你把文件放在你的Bins文件夹中时,它就会发生(如果发生的话)。

对话的到来是因为该公司的网站用于上传文件,但文件保存在我们网站的文件夹名称“Letters”中,我的朋友说每次有人上传文件IIS都会重新编译整个网站。他是对的吗?

6 个答案:

答案 0 :(得分:2)

它只在您添加需要编译的代码时重新编译。即向App_Code添加新类。当您只是将图像或文本文件保存到网站时,它不会重新编译。

答案 1 :(得分:2)

足够容易测试。开始在Web服务器上查看JIT编译计数器...浏览器周围,然后在其中删除一个文件以查看计数器显示。

答案 2 :(得分:1)

我认为只有当bin程序集,App_Code或global.asax发生更改时,ASP.NET才会重新启动并重新编译整个站点。

有关优化ASP.NET编译行为的新标志的详细信息,请参阅this blog post

将文件添加到虚拟目录中的文件夹不应导致重新编译(除非该文件夹是'bin'或'app_code'!)

答案 3 :(得分:1)

machine.config中有一个设置numRecompilesBeforeApprestart,它指示在应用程序重新启动之前可能发生的文件更改次数。默认值为15。

在非生产环境中,我通常设置得更高,因此您可以动态修改aspx页面,而不会导致整个应用程序重新启动。

这可能就是你朋友所说的。

答案 4 :(得分:1)

回收应用程序池。在powershell中:

$AppPoolName = 'NameOfApp'

$AppPool = Get-ChildItem iis:\apppools | where { $_.Name -eq $AppPoolName}

Restart-WebAppPool $AppPool

这会强制代码重新编译。

答案 5 :(得分:0)

绝对取决于您的版本,因为: 还有一个新的修补程序,可以让你优化编译,所以IIS不经常重新编译,但我不确定到底是什么时候。

我认为以前是新标记如果不导航到它而不会触发重新编译(而是导航到另一个标记文件),并且bin / dll / assembly文件将始终触发。