【问题标题】:Why is My ASP Web Application Attempting to Write to C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files?为什么我的 ASP Web 应用程序试图写入 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET 文件?
【发布时间】:2012-04-17 03:52:47
【问题描述】:

我在将 ASP Web 应用程序部署到 HostMySite 时遇到问题。该应用程序以前已部署到不同平台上的服务器上,没有问题。但是,对于当前域和服务器,我继续收到下面的服务器错误。

“/PropertyManagement”应用程序中的服务器错误。 当前身份 (ADSAFESECUREWEB\C116018-fhmonlinea) 没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写入权限。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Web.HttpException:当前身份 (ADSAFESECUREWEB\C116018-fhmonlinea) 没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写入权限.

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。我知道代码没有明确尝试写入 .NET 临时目录,但是我想知道应用程序是否在运行时以某种方式使用该目录。主机一直告诉我,我必须将我的应用程序配置为不使用临时目录,因为它们不会提供对它的读/写访问权限。有人可以告诉我为什么我的应用程序可能会尝试使用这个目录,以及我可以做些什么来配置它以使用我有权访问的不同目录。我是 ASP 开发新手,需要帮助。谢谢!

堆栈跟踪:

[HttpException (0x80004005): 当前身份 (ADSAFESECUREWEB\C116018-fhmonlinea) 没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写入权限。] System.Web.HttpRuntime.SetUpCodegenDirectory(CompilationSectioncompileSection) +11650831 System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +323

[HttpException (0x80004005): 当前身份 (ADSAFESECUREWEB\C116018-fhmonlinea) 没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写入权限。] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文)+11612256 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4842149

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.1

【问题讨论】:

    标签: c# asp.net iis


    【解决方案1】:

    CLR 将您的所有程序集复制到该目录并编译您的 .aspx/.asmx/etc 文件并将编译后的版本放入临时 ASP.NET 文件中。

    这必须是可写的,以便您的网站可以在运行时编译。

    编辑:这是an MSDN article 解释它。

    正如 cmets 中所讨论的,如果提供商拒绝让您写入该目录,您可以通过将以下内容放入您的 web.config, 'system.web' 部分来覆盖它:

    <compilation tempDirectory="c:\path\to\directory\you\can\write" />
    

    【讨论】:

    • 我们通过 HostMySite 托管该网站,他们一直告诉我他们不允许对该目录进行写访问。几天来,我一直在与他们争论这个问题。您是否建议我尝试查找一些在上面明确说明您的信息的 MSFT 文档,以证明它们没有正确配置?自从他们在 6-8 个月前开始重新搭建平台以来,我一直对这台主机有问题。自然,该应用程序在我们的开发环境中运行良好。
    • 与您交谈的支持人员可能不理解。那篇 MSDN 文章解释了它。如果他们说的是真的,几乎每个人的网站都会被破坏。如果他们确实为您提供了一个您可以写入的目录,您可以在web.configto use that directory 中设置它。
    • Here'stempDirectory 设置的更好链接。基本上你会在web.config&lt;configuration /&gt; 元素中使用&lt;compilation tempDirectory="c:\directory\you\can\write\to" /&gt;
    • 谢谢,我在发表评论后不久就在您的文章中找到了它。那工作得很好。感谢您的帮助。
    • 刚刚注意到Windows 8“发布预览”中发生了这种情况,所以我猜一些默认设置已经改变?使用完全相同的安装程序。我在以下任何设备中都没有收到此错误:Windows 7、Server 2008 R2 或 XP SP3
    【解决方案2】:

    将应用程序池的标识添加到服务器的 IIS_IUSRS 组。

    【讨论】:

    • 太棒了!我为我的 apppool 用户添加了对临时 ASP.NET 文件的完全控制。但是在将 apppool 用户添加到 IIS_IUSERS 组后,我可以删除完全控制权限,一切正常。非常感谢!
    【解决方案3】:

    我必须将应用程序池标识设置为 NETWORKSERVICE 然后将连接到我的网站的用户(您在 IIS 设置中为您的网站在 Basic Settings 下“连接为”的用户)添加到 IIS_IUSRS 组

    【讨论】:

      【解决方案4】:

      当我将物理路径凭据(在高级设置中)设置为我的应用程序池的帐户时出现此错误。

      在我的情况下,修复方法是将物理路径凭据重置为“应用程序用户”,并使用this answer 修复我的原始错误,即将匿名身份验证重置为应用程序池身份,对于这个特定站点来说,该身份是 IUSR,一个无权访问应用程序路径的用户(因为我们使用特定用户作为应用程序池身份)。

      【讨论】:

        【解决方案5】:

        也可以重装asp.net,步骤如下:

        cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
        aspnet_iis -i
        

        【讨论】:

        • 你的意思是aspnet_regiis吗?
        猜你喜欢
        • 2017-12-08
        • 2012-03-09
        • 1970-01-01
        • 2012-05-16
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多