编译错误CS0016:无法写入输出文件

DrG*_*iff 17 asp.net iis asp.net-mvc visual-studio asp.net-mvc-4

简单来说

当我尝试浏览我的网站时,收到以下错误消息:

CS0016:无法写入输出文件'c:\ Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\www\xxx\yyy\zzz\abdll' - '目录名无效'

详细地

我的开发PC上有两个网站(虚构名称):

  • Web2 - 这是使用.NET 3.5在ASP.NET中编写的,并在AppPool中运行,该AppPool用于解决v2.0 .NET框架并以集成模式运行.这是使用Visual Studio 2010开发的
  • Web4 - 这是使用.NET 4.5在ASP.NET中编写的,并在AppPool中运行,该AppPool用于解决v4.0 .NET框架并以集成模式运行.这是使用Visual Studio 2012开发的.

最近,我几乎经常在Web4上使用VS2012,它工作正常,但是前几天我试图运行Web2并得到上面显示的异常.

奇怪的是,路径的一部分(我上面用字母"zzz"替换)似乎指向德语路径,因为它是"\ de-DE" - 我不是用德语操作,所以我不知道从哪里得到这个想法.

有一件事几乎肯定是无关紧要的,但由于某些未知的原因,我觉得重要的是提到:我在Visual Studio 2012中使用性能分析工具在此问题首次出现的前一天,我不知道这是否可能有对我的电脑做了一些改动......?

尝试修复

互联网上有很多相关的话题; 一些线程成功结束,其中文件访问权限已被更改,而其他线程完成了一些有点绝望的声音...我已经完成了将我的PC上所有相关声音目录的NTFS权限与其同事的NTFS权限进行比较的过程.机器这仍然有效.不幸的是,在那里没有快乐.

我还卸载了asp.net 2.0并使用以下命令重新安装:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -u
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -ir
Run Code Online (Sandbox Code Playgroud)

再一次,在那里也没有快乐.

我的Web4继续不受影响.

另外,仅供参考:在Win7 x64上使用IIS 7.5.

我现在转向更广泛的观众,希望将我目前的绝望状态转变为成功之一.

感谢大家

格里夫

web*_*rge 42

在IIS管理器中,在应用程序池的高级设置中,确保"过程模型>加载用户配置文件"设置为"True".

我有同样的问题.我尝试更改权限,禁用防病毒,创建新的应用程序池,以及重新安装.NET.我甚至创建了一个只有"Default.aspx"页面的新网站,并尝试查看该网站.即使该网站也有编译错误.最后,我注意到我的应用程序池(干净的测试站点和主站点)具有加载用户配置文件设置的非默认值"False".我把它恢复为真,问题就消失了.

  • 这为我节省了冠心病. (2认同)
  • 我一直在谷歌搜索这个问题几个小时.这解决了我的问题.谢谢 (2认同)

DrG*_*iff 9

答案是使用ProcMon找到的:

http://technet.microsoft.com/en-us/sysinternals/bb896645

临时asp.net文件首先在用户的临时文件夹中创建,然后移动到此文件夹中.由于一些尚未知的原因,我的Web2站点(.NET 2 AppPool)的编译现在使用与我的Web4(.NET 4 AppPool)站点相同的文件夹.

我使用ProcMon来识别"拒绝访问"的所有结果,并给予IIS_IUSRS组写权限(在一种情况下 - C:\ Users\ASP.NET V4.0集成 - 修改权限).

我不知道为什么编译使用"错误的"文件夹,我怀疑在某些情况下我可能会过度提升权限,但现在它正在工作.


小智 5

如果上述答案没有为您解决问题,请检查您的环境变量(右键单击计算机 -> 属性 -> 高级系统设置 -> 高级选项卡 -> 环境变量

确保临时变量指向具有所有必要权限的文件夹。(网络服务的完全访问权限,IIS_IUSRS)

注意:不要只检查顶部的两个变量,请查看系统变量下的滚动菜单内部。您也可能会在那里找到配置的变量。