当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET拒绝访问临时目录

如何解决《ASP.NET拒绝访问临时目录》经验,为你挑选了2个好方法。

我今天在许多不同的服务器上遇到这个问题.

System.UnauthorizedAccessException:拒绝访问临时目录.

最近没有触及服务器.我脑子里唯一想到的是Windows更新破坏了什么......有什么想法吗?

尝试从asp.net页面访问Web服务时会发生这种情况

System.UnauthorizedAccessException: Access to the temp directory is denied.  Identity 'NT AUTHORITY\NETWORK SERVICE' under which XmlSerializer is running does not have sufficient permission to access the temp directory.  CodeDom will use the user account the process is using to do the compilation, so if the user doesnt have access to system temp directory, you will not be able to compile.  Use Path.GetTempPath() API to find out the temp directory location.
       at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
       at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
       at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
       at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Evidence evidence)
       at System.Web.Services.Protocols.XmlReturn.GetInitializers(LogicalMethodInfo[] methodInfos)
       at System.Web.Services.Protocols.HttpServerType..ctor(Type type)
       at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
       at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
       at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Mun.. 11

你有没有检查临时文件夹的权限?在这些情况下,最简单,最快速的解决方案通常是重新运行aspnet_regiis -i命令来重新安装asp.net框架,该框架也会重置所需文件夹的权限.如果做不到这一点,请尝试使用Process Monitor检查发生了什么并相应地修改权限.



1> Mun..:

你有没有检查临时文件夹的权限?在这些情况下,最简单,最快速的解决方案通常是重新运行aspnet_regiis -i命令来重新安装asp.net框架,该框架也会重置所需文件夹的权限.如果做不到这一点,请尝试使用Process Monitor检查发生了什么并相应地修改权限.


我有同样的问题,使用进程监视器为我解决了问题.您只需要查看文件系统活动,然后查找w3wp.exe.错误消息类似于权限被拒绝,它给出了w3wp尝试写入的确切文件夹.我给网络服务用户名读取,写入和列出文件夹内容权限.

2> cgreeno..:

我遇到了同样的问题,以上都没有解决我们的问题 - 我们通过更改每个应用程序池网站运行的设置暂时恢复服务 - 您可以通过进入应用程序池 - >标识选项卡和更改用户来执行此操作从网络服务到本地用户 - 虽然我们发现了问题所在(不推荐这样做 - 所以如果你选择这样做,请确保你理解这些影响)

然后,我们发现了一个链接有关TEMP\TMP映射,以及如何解决这些问题哪位不是我们的问题

在另一个网站上(并在其他答案中描述),我们曾经Path.GetTempPath()看到CLR实际上正在寻找它的结果

C:\ WINDOWS\system32\config\systemprofile\Local Settings\Temp文件夹

然后我们使用Process Monitor来验证这实际上是正确的,当我们更改了它正确工作的文件夹的权限时.我们仍然不确定为什么CLR选择停止使用默认的临时目录,但我们确实找到了如何做出决定的链接.如何选择GetTempPath.

更新:我们终于弄清楚当有人决定重复错误时,我们的Temp文件夹PATH如何更改!问题是CLR Profiler 有人决定在live上运行,它改变了temp目录的所有权限,所以如果你还不知道这个,我不建议在Prod服务器上运行它.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有