CS0016:无法写入输出文件“c:\..\..\App_Web_XXXX.aspx..dll”——“目录名无效。”

CS0016:无法写入输出文件“c:\..\..\App_Web_XXXX.aspx..dll”——“目录名无效。”

这个问题让我抓狂。

CS0016:无法写入输出文件“c:\Windows\Microsoft.NET\Framework<64>\vX.X.XXXX\Temporary ASP.NET Files\root\XXXXXX\XXXXXX\App_Web_XXXX.aspx.XXXXXXXX.XXXXXXXX.dll”——“目录名无效。”

我已尝试授予对 C:\windows\temp 上的网络服务和 v4.0.xxx 文件夹中的临时文件夹的完全访问权限。

服务器是Windows Server 2008 R2;SQL Server 2008 R2安装在同一台服务器上。

我认为这可能与在安装 .NET Framework 4.0 后安装 SQL Server 有关,但我运行了它aspnet_regiis.exe -u然后-i重新安装。我尝试从 Framework 文件夹和 Framework64 文件夹进行安装,但无济于事。

有其他人遇到过这个问题吗?如果有,您是如何解决的?

答案1

在应用程序池的高级设置中,确保“进程模型>加载用户配置文件”设置为“True”。

我遇到了完全相同的问题。我尝试更改权限、禁用防病毒软件、创建新的应用程序池并重新安装 .NET 4.0。我甚至创建了一个只有“Default.aspx”页面的新网站并尝试查看该网站。甚至该网站也出现了编译错误。最后,我注意到我的应用程序池(干净的测试网站和主网站)的“加载用户配置文件”设置具有非默认值“False”。我将其重新设置为 true,问题就解决了。

答案2

该路径中的某个文件夹名称无效:框架<64>。您不能在文件夹名称中使用尖括号,因为这些符号用于重定向输入/输出。该文件夹存在吗?可能不存在。因此,某些程序正在尝试创建并使用该文件夹,但失败了目录名无效。 尝试查看您正在运行的导致此错误的配置。如果失败,请尝试在注册表中搜索该字符串并将其替换为更合理的文件夹名称。最好的办法是首先确定哪个程序正在尝试使用此路径,将其完全卸载并重新安装,确保它不会尝试使用无效的文件夹名称。

答案3

  1. 在 下创建一个临时文件夹%Systemroot%,然后将其命名为Temp
  2. 向 .NET Framework 1.0 中的 aspnet 用户帐户或 .NET Framework 1.1 中的 NETWORK SERVICE 用户帐户授予对 Temp 文件夹的完全权限。
  3. 右键单击“我的电脑”,然后单击“属性”。
  4. 在高级选项卡上,单击环境变量。
  5. 选择系统变量下的 TEMP 变量,然后单击编辑。
  6. 在变量值框中键入%SystemRoot%\TEMP,然后单击确定。
  7. 重复步骤 5 和 6 以编辑 TMP 变量。单击“确定”两次。
  8. 单击“开始”,然后单击“运行”。
  9. 要重置 Internet 信息服务 (IIS),请iisreset在命令提示符中键入。

相关内容