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.