为什么我的ASP Web应用程序试图写入C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files?

时间:2012-04-03 13:22:45

标签: c# asp.net iis

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

'/ 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(CompilationSection compilationSection)+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 context)+11612256    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+4842149

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

5 个答案:

答案 0 :(得分:23)

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

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

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

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

在我的情况下,修复是将物理路径凭据重置为&#34;应用程序用户&#34;,并使用this answer修复我的原始错误,即将匿名身份验证重置为应用程序池标识,这个特定的网站是IUSR,一个无法访问应用程序路径的用户(因为我们正在使用特定用户获取应用程序池标识)。

答案 4 :(得分:0)

也可以重新安装asp.net,找到以下步骤:

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