IIS结构下的aspnet_client文件夹是什么?


108

我注意到在标准IIS Web文件夹结构下经常有一个aspnet_client文件夹。这是做什么用的?需要吗?

Answers:


91

在.NET 1.1之前的版本中,此文件夹为ASP.NET提供了对验证控件和其他功能的JavaScript支持。如果您没有运行.NET 1.1或更早版本的站点,则应安全删除它。我将首先对其重命名以确保它不会引起任何问题。


15
它显示来提醒您如何不再做类似的事情... :)
Ostati 2015年

即使您现在不在.Net 1.1的日子里,也可以使用Crystal Reports,但不幸的是,该报表仍然使用提到的文件夹(并且可能还有其他具有相同行为的软件)。因此,至少在删除文件夹之前进行备份
Vadim Levkovsky

66

除了其他人所说的,它通常是由aspnet_regiis工具创建的,可以通过Windows Update / AddRemove Windows组件/ IIS之类的东西(重新)运行。因此,有时即使您删除了它,它也可能会随机返回。可能有一种方法可以停止这种行为,但是我还没有发现(也许将应用程序版本更改为.NET 2确实可以做到)。

因此,除非您使用的是.NET 1.0 / 1.1的某些功能(验证,智能导航等),否则可以毫无问题地删除它,如果它回来了,请不要感到惊讶!


28
我发现它会定期回来。最令人沮丧的是,每次它回来时,都会破坏WebDeploy,因为运行该帐户的帐户无权删除创建的aspnet_client文件夹!
Russ Cam

5
@RussCam我完全有同样的问题。出于同样的原因,它破坏了WebDeploy。有没有人找到停止随机创建此文件夹的方法?
tugberk 2012年

4
我只是天真地安装了DotNet Framework 4.5,不久之后,由于同样的原因,我们的WebDeploy部署(通过TeamCity触发)中断了。由于安装了4.5,darn文件夹再次出现。有人,请停止。
2013年

2
现在,我实际上是将这些文件夹添加到我们的部署包中,因此TeamCity不会尝试删除它们。感觉这正在污染我们的代码库,但是希望它将停止ASP.NET和我们的应用程序部署之间的权力斗争。
Michael12345

1
我也很讨厌这个文件夹一直出现,我们没有asp.net 1.x站点,但是似乎每个Windows自动更新都会在每个站点中放置这个血腥的文件夹,因此破坏了我所有的Web部署。我同意@ Michael12345的观点,这不是向SC添加无用文件夹只是使部署继续有效的好方法,并且不需要在周末获胜更新后的每个星期一手动修复(将ACL权限错误地重新添加到每个站点) 。烦人!
MemeDeveloper

15

aspnet_client是“必须通过HTTP服务但必须基于每个服务器而不是每个应用程序安装的资源”的文件夹。

aspnet_client的某些用途包括为以下资源存储资源(例如JavaScript,图像):

  • 使用客户端验证时,ASP.NET Web窗体的JavaScript控件(似乎主要用于处理IE5等旧版浏览器)
  • 用于“全局主题”(对于服务器上的所有站点都是全局的)的ASP.NET 2.0(直到框架4.0)
  • 某些版本的Crystal Reports

将来可能/将进一步使用此文件夹。不用说,由于它包含“应用程序正确运行所必需的”但“不应由应用程序部署”的内容,因此它对于开发人员和系统管理员而言都是噩梦。

似乎文件夹内容的“原型”在C:\ inetpub \ wwwroot \中,并且可以合理地假设,如果任何给定的IIS网站缺少/ aspnet_client资源,则IIS将尝试做正确的事情... ...作为最后的手段...在网站根文件夹中创建一个物理文件夹,然后将文件复制到该目录中。看来,至少在调用“ ASPNET_regiis / c”给定服务器时IIS会执行此操作-这可能在某些关键时刻自动发生……例如,将.NET Framework更新应用于具有IIS角色的服务器时。

处理aspnet_client目录的策略包括:*指定映射到C:\ inetpub \ wwwroot的虚拟目录,以希望IIS放弃创建物理目录。*如果确定站点不正确,则不时删除该物理目录。不需要它,而这确实使您感到困扰*如果您缺少文件夹,并且自己需要它,那么请忽略aspnet_client *自己运行“ ASPNET_regiis / c”

可能最重要的是,作为开发人员,您应该清楚地了解并记录应用程序对aspnet_client目录的依赖关系,并确保安装过程中具有相关的说明以确保该目录存在。但是,你应该不会打扰到实际提供的目录中打包的Web应用程序或网站的一部分-你怎么可能为.NET Framework的服务器会看到在你的应用程序生命周期的每个版本做到这一点?

我将在稍后返回一些链接:


因此,如果您在wwwroot下添加aspnet_client文件夹,其内容将复制到您安装的每个Web应用程序中
George Birbilis 2014年

8

它还具有某些图标和脚本,即使在1.1版之后的版本中,水晶报表也需要这些图标和脚本才能正常运行


是的,很难找到答案。我将Ripplestone实例从“默认网站”下的虚拟目录移到了它自己的网站上,一切开始在Ripplestone中破天荒。我看着JavaScript控制台,并认为这是在找东西,C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 不知道这是否是正确的做还是不做的事情,但我只是复制从根全aspnet_client文件夹到我的Ripplestone例如住在目录中。
亚当·诺夫辛格

3

该文件夹通常用于存储客户端Javascript,ASP.NET使用该Javascript进行验证。

应该可以安全删除。


1

我想在这里添加它,因为这是我在搜索这个问题时一直指向的链接。显然,在.NET 4.0和更高版本中,不再需要该文件夹,并且可以毫无问题地删除该文件夹。


0

如果使用Installshield配置ASP.net网站,请注意,Installshield 2010中存在此功能,而Installshield 2012中缺少此功能。 Installshield 2010与2012


IS2010中没有某些功能。尝试更多以前的版本。
Vishnu Prasanth '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.