当前位置: 首页 > 编程语言 > C#

ASP.NET拒绝访问临时目录共享

时间:2023-04-10 20:42:12 C#

ASP.NET拒绝访问临时目录我今天在许多不同的服务器上遇到了这个问题。System.UnauthorizedAccessException:拒绝访问临时目录。服务器最近没有动过。我唯一能想到的是Windows更新破坏了什么……有什么想法吗?当尝试从asp.net页面访问Web服务时会发生这种情况System.UnauthorizedAccessException:访问临时目录被拒绝。运行XmlSerializer的标识“NTAUTHORITYNETWORKSERVICE”没有足够的权限访问临时目录。CodeDom将使用进程正在使用的用户帐户进行编译,因此如果用户无权访问系统临时目录,您将无法编译。使用Path.GetTempPath()API找出临时目录位置。在System.Xml.Serialization.Compiler.Compile(程序集父级,字符串ns,XmlSerializerCompilerParametersxmlParameters,证据证据)XCompilSml参数、Assembly程序集、Hashtable程序集)在System.Xml.Serialization.TempAssembly..ctor(XmlMapping[]xmlMappings,类型[]类型,字符串默认命名空间,字符串位置,证据证据)在System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[]映射,证据证据)在System.Web.Services.Protocols.XmlReturn.GetInitializers(LogicalMethodInfo[]methodInfos)在System.Web.Services.Protocols.HttpServerType..ctor(类型类型)在System.Web.Services.Protocols.HttpServerProtocol.Initialize()在System.Web.Services.Protocols.ServerProtocol.SetContext(类型类型,HttpContext上下文、HttpRequest请求、HttpResponse响应)在System.Web.Services.Protocols.ServerProtocolFactory.Create(Type类型、HttpContext上下文、HttpRequest请求、HttpResponse响应、Boolean&abortProcessing)是否检查了临时文件夹权限?在这些情况下,最简单快捷的解决方案通常是重新运行aspnet_regiis-i命令以重新安装asp.net框架,这也会重置所需文件夹的权限。如果失败,请尝试使用ProcessMonitor检查发生了什么并相应地修改权限。我遇到了同样的问题,但以上并没有解决我们的问题——我们通过更改网站运行的每个应用程序池的设置来临时恢复服务——你可以通过转到应用程序池->身份选项卡并从为本地用户提供网络服务-虽然我们发现了问题所在(不推荐-所以如果您选择这样做,请确保您了解其含义)然后我们在TempTMP地图上找到了一个链接以及如何修复它们-这不是我们的问题在另一个站点上(并在其他答案中描述),我们使用Path.GetTempPath()来查看CLR实际在寻找什么C:\WINDOWS\system32\config\systemprofile\LocalSettings\Temp文件夹我们然后使用ProcessMonitor验证这实际上是上面的内容是正确的,当我们更改文件夹的权限时它工作正常。我们仍然不确定为什么CLR选择停止使用默认的临时目录,但我们确实找到了一个链接,说明该决定是如何做出的。如何选择GetTempPath。更新:我们终于弄清楚当有人决定重复错误时我们的临时文件夹PATH是如何改变的!问题是有人决定实时运行CLRProfiler,它更改了临时目录的所有权限,所以如果您还不知道这一点,我不建议在Prod服务器上运行它。无论突然更改的原因是什么,您都可以使用异常中描述的步骤解决问题。调用Path.GetTempPath来找出它认为临时目录是什么,它可能不是你认为的那样。转到该目录并为用户“NETWORKSERVICE”提供所需的权限,可能是“读/写”。它确实是一个在IIS中运行的网站吗?并访问网络服务。它可以作为ASPNET匿名运行,也可以模拟连接的用户,或者最终Web服务本身作为“用户”连接。无论哪个用户都可以访问临时目录。奇怪的是什么都没有改变:)。但是,Windows服务包可以更改安全设置。WindowsServer2003-IIS6.0-同样的问题。c:\windows\temp=currenttemporarydirectory-按照cgreeno的建议使用procmon让我看到访问被拒绝。我授予用户“Everyone”对c:\windows\temp文件夹的完全权限,但访问仍然被拒绝。授予混合中所有用户的完全访问权限(本地系统、网络服务、应用程序池身份用户等),但没有帮助。尝试了ASPNET_REGIIS-ir但没有帮助。我创建了一个新的本地系统用户“tempuser”并分配给本地“管理员”组。我导航到Windows服务并停止了“万维网发布”、“IIS管理”和“HTTPSSL”。我将“tempuser”分配给所有三个服务。我尝试启动每项服务,但由于各种原因它们未能启动。然后我将所有3个服务放回用户的“本地系统”,突然我的访问被拒绝错误消失了。不知道为什么。我的AppPool用户遇到了其他文件系统错误,但这些现在也工作正常。看起来本地系统帐户与windows服务的分配是错误的。*更新*问题又回来了。奇怪...在我的情况下,杀毒软件(COMDO)对此负责...在杀毒软件更新后,它刚刚开始阻止访问我的本地服务临时文件夹(不是全部,只有几个)...有点棘手弄清楚...转到roslyn文件夹(进入项目的bin文件夹)并在运行应用程序池的用户处添加读/写权限以上是C#学习教程:ASP.NET拒绝访问临时目录的全部内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: