IIS 6.0和ASP.NET - 无法写入输出文件...目录名称无效

9
我在 Windows 2003 上运行 IIS 6.0,最近遇到了这个错误:

编译器错误消息:CS0016: 无法写入输出文件“c:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\7382c13f\ea9b3ff7\App_global.asax.zodyof_q.dll”——“目录名无效。”

我已经检查了所有权限,一切都是需要的 - 而且,错误消息没有提到权限。我已经尝试过以下操作:

  • 按照这篇[过时的] KB 文章中的说明:http://support.microsoft.com/kb/825791/en-us
  • 修复 .NET Framework v3.5 安装,然后重新启动
  • 删除 c:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root 的内容,然后运行 iisreset
  • 重置 c:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root 的权限,然后运行 iisreset
  • 重置 c:\WINDOWS\TEMP 的权限,然后运行 iisreset

有什么建议吗?


其他注意事项/回应:

  • 索引服务已禁用。

那个文件名是如何获得的? - Joel Coehoorn
不确定我是否理解 - 如果您是指从错误页面中复制的内容,那就是这个意思。 - Daniel Schaffer
这个超级用户上的答案解决了我的问题:http://superuser.com/a/638462/98557 - Blake Mitchell
https://support.microsoft.com/zh-cn/kb/825791 对我很有用。 - mehran
10个回答

4

3
  1. %SystemRoot%下创建一个临时文件夹,并将其命名为Temp
  2. 在.NET Framework 1.0中,授予aspnet用户账户对Temp文件夹的完全权限,或者在.NET Framework 1.1中授予NETWORK SERVICE用户账户对Temp文件夹的完全权限。
  3. 右键点击My Computer,然后点击Properties。
  4. 在高级选项卡中,点击环境变量。
  5. 选择系统变量下的TEMP变量,然后点击编辑。
  6. 在变量值框中输入%SystemRoot%\TEMP,然后点击确定。
  7. 重复步骤5和6来编辑TMP变量。点击两次确定。
  8. 点击开始,然后点击运行。

要重置Internet Information Services(IIS),请在命令提示符上键入iisreset


2

2
使用SysInternals FileMon(或ProcMon,如果您喜欢)查看它抱怨的真实文件。如果您的服务器很忙,可以将其限制为仅监视IIS,尽管我会从所有进程开始,并捕获几秒钟的输出。
在运行之前,请确保使用iisreset / restart重置IIS,以便不会从以前缓存错误。
Ryan

2
我在运行IIS 7.0 / Vista Ultimate / .NET 2.0 Web App时遇到了相同的错误。我尝试为NETWORK SERVICE用户在临时文件夹上设置“完全控制”权限(右键单击文件夹,选择属性,安全选项卡),关闭杀毒软件和UAC,但没有帮助。
但是这个方法像魔法一样奏效:打开IIS Manager->从右侧菜单中选择“查看应用程序池”->选择“高级设置”->在“标识”属性中设置您的用户名(和密码)->重新启动IIS。
如果这不起作用,请额外检查您是否是c:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727文件夹的所有者(右键单击,选择属性,安全选项卡,高级选项卡,所有者选项卡)。

1

好的,当你修复安装时,是指 ASPNET_REGIIS -u / ASPNET_REGIIS -i 吗?这将修复磁盘权限。

可能是你的病毒扫描器;如果可以并且安全的话,请排除你的 .net 临时文件夹 / inetpub。


0

从windows server 2003 x64,IIS6,net 4.0,asp应用程序出现了以下错误:

编译器错误消息:CS0016:无法写入输出文件'c:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files \ root \ 7382c13f \ ea9b3ff7 \ App_global.asax.zodyof_q.dll' -'目录名无效。'

创建DIR后问题得到解决:

d:\ temp

不知道为什么D:\ temp很重要,但我会尽快提供答案。

DIR上的权限是:

管理员完整

创建者所有者特殊

系统完整

用户读&执行/列表/读取

未定义任何IIS特定用户权限。

正在努力迁移到IIS7主机,但认为这个答案可能对某些人有所帮助。


0

这里是最终解决方案 :)


  1. 首先,将所有权限授予ASPNET帐户、NETWORK SERVICE帐户,以便在使用任何框架下的“ASP.NET临时文件”文件夹中进行操作。
    例如:C:\windows\microsoft.net\framework\v2.xxx\ASP.NET Temporary files。

  2. 检查计算机环境变量TEMP和TEMP下配置的临时文件夹。同样地,将该文件夹的所有权限授予ASPNET帐户、NETWORK SERVICE帐户。重置IIS即可。


0
我收到了相同的错误。反病毒/安全软件(McAffee Viruscan Enterprise)阻止了Visual Studio工具csc.exe动态编译代码并在目录文件夹中创建实体数据模型dll,该文件夹位于Windows目录文件夹上面的位置。 McAffee中有一个名为访问保护的部分,其中有一条名为最大保护的规则,禁止在Windows目录文件夹中创建可执行文件。简单地暂时禁用此规则或访问保护以成功编译网站。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接