C#学习教程:在IIS77中启动应用程序时出现“CS0016:无法写入输出文件”错误,并且通常不是此设置中的开发人员,并且最近在C#中构建了一个WCFRest服务,我现在正在尝试部署到我本地机器上的IIS。经过多次争论后,我设置了应用程序,但是当我导航到该应用程序时,我收到一条错误消息:编译错误描述:编译服务此请求所需的资源期间发生错误。请查看下面的具体错误详细信息并相应地修改源代码。编译器错误消息:CS0016:无法写入输出文件'c:\Windows\Microsoft.NETFramework64v4.0.30319TemporaryASP.NETFiles\scom_sibyll\8c0b945e9329016\App_global.asax.eagmqgcd.dll'-'访问被拒绝。“我尽我所能搜索了网络并更改了TemporaryASP.NETFilesfodler的权限以允许网络服务帐户的完全权限并对Temp文件夹执行相同的操作。它在失败之前复制了许多文件,所以它可能有写权限,所以我检查了我的源文件夹的读取权限,这也有效。我还注意到它在尝试缓存DLL文件时遇到问题,并尝试关闭我的防病毒保护,并关闭UAC,只是为了看看我是否可以弄清楚是什么阻止了这种情况的发生。我现在没有想法。有人有什么建议吗?听起来运行WCF服务的帐户没有写入“临时ASP.NET文件”目录的权限。您也可以尝试重新运行regiis。%windir%Microsoft.NETFramework64v4.0.30319aspnet_regiis-iASP.NETIIS注册工具(Aspnet_regiis.exe)和我一样看到这里的,如果采纳的答案没有解决问题,可以试试看这篇文章:http://lordzoltan.blogspot.com/2011/02/aspnet-2-and-4-default-application-pool.html总之,当应用程序池用户无权访问%TMP%/%TEMP%文件夹,有时会显示同样的错误。您需要授予IIS_IUSRS读取权限并修改对运行应用程序池的用户的临时文件夹的访问权限。这可以是应用程序池用户配置文件中的临时文件夹,例如c:WindowsServiceProfilesNetworkServiceAppDataLocalTemp,或c:windowstemp中的系统临时文件夹。设置这个解决了我的问题。在Windows8/Server2012上,不再支持aspnet_regiis。我尝试使用Windows功能重新安装:失败。我尝试重新安装IIS:失败。我尝试通过WebPI重新安装:失败。我通过在Windows临时目录上设置ACL解决了这个问题。这是一个可以完成这项工作的powershell:$dir="C:WindowsTemp"$acl=get-acl-path$dir$new="IIS_IUSRS","Modify","ContainerInherit,ObjectInherit","None","Allow"$accessRule=新对象System.Security.AccessControl.FileSystemAccessRule$new$acl.SetAccessRule($accessRule)$acl|Set-Acl$dir有3个步骤:1-检查“应用程序池标识”是否为NetworkService2-NETWORK_SERVICE帐户需要完全控制:。C:Windows温度。C:WindowsMicrosoft.NETFramework[relatedframework]TemporaryASP.NETFiles3-重新启动IIS解决了错误您也可以尝试重新运行regiis。“%windir%Microsoft.NETFramework[relatedframework]aspnet_regiis-i”这个KB为我解决了这个问题,看起来操作系统环境变量中不存在临时文件路径。http://support.microsoft.com/kb/825791我给了IIS_WPG组对C:\Windows\Temp的读写权限。这对我有用。我在Server2003R2和IIS6上,组名不同。我来自http://learn.iis.net/page.aspx/140/understanding-built-in-user-and-group-accounts-in-iis/它说:?IUSR内置帐户取代了IUSR_MachineName帐户。?IIS_IUSRS内置组替换了IIS_WPG组。感谢Dommer建议使用windowstemp文件夹,感谢zcrar70提供指向漂亮的总结和详细描述的链接。对我来说,解决方案是此处描述的修复程序的组合。我必须授予NETWORK_SERVICE帐户完全控制权C:\WINDOWS\TEMP和C:\Windows\Microsoft.NETFramework[RelatedFrameworks]TemporaryASP.NETFiles并将应用程序池标识更改为NetworkService。另外,不要忘记在完全控制Temp文件夹上的NETWORK_SERVICE后重新启动IIS有时,Temp文件可能被工作站中的其他进程锁定。首先,重新启动您的工作站并检查应用程序。在Windows8上对我来说绝对没有用。有一天,应用程序池突然决定他们不再希望在NetworkService帐户下工作。我通过将应用程序池更改为在我自己的用户帐户下工作来解决问题。我知道这不是一个很好的解决方案,但它确实有效。当我使用bat文件删除临时文件时会发生此错误。它可能删除了目录本身,并且给定的权限消失了。所以你必须以某种方式恢复它们。最简单的方法是让Everyone完全控制以下目录:C:WINDOWSTEMPC:WindowsMicrosoft.NETFramework[RelatedFrameworks]TemporaryASP.NETFiles我有权限,但我开始收到这个错误.“重启机器”对我有用我在使用asp.netcore2.0开发webapi时遇到了同样的错误,重启机器后问题得到解决。以上就是C#学习教程的全部内容:在IIS7中启动应用程序时出现“CS0016:Unabletowritetheoutputfile”错误,如果对大家有用,需要进一步了解C#学习教程,希望你会多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
