2009-05-27 46 views
13

字面上我每次运行一个大的丑陋的网站项目,我得到一个UnauthorizedAccessException,并带有一条指向DLL的消息,例如, Temporary ASP.NET Files\ctheweb\0d76d363\4695c81f\App_Web_vi6bbbpy.dll' is denied.然后停止并重新启动项目,并且运行良好。我做了一些测试,调试,修复,再次运行,并再次得到错误。频繁访问被拒绝临时ASP.NET文件

我倾向于添加一个预生成命令来清除那个目录,但我总是喜欢用锤子以外的其他东西来解决问题,至少在最初的时候。

+0

我一直在这个星期收到此错误也。但是,它只是在我的应用程序池在64位机器上切换到32位后才开始。这也是你的情况吗? – 2011-01-28 14:57:18

回答

10

在开发过程中,当您不断修改aspx页面时,会发生这种情况,ASP.NET正在尝试编译,而VS正在尝试编译并且ASP.NET正在尝试执行这些文件。此外,有时当您重置IIS时锁定消失。

iisreset /stop 
del "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\*.*" /Q /F /S 
del “C:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\*.*” /Q /F /S 
iisreset /start 

如果在生产中发生这种情况,请将此添加到您的web.config中。

<compilation tempDirectory = “C:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\Other\” /> 

(滚动到一边,关键是要挑选一些\其它\文件夹不是默认的。

最后,使用部署的项目,试图提前预编译的一切。没有编译意味着没有企图取代Temp文件夹东西

或者你可以尝试OS诊断和尝试找出哪个进程对文件的锁定并杀死该进程。不值得时,更容易的解决方案存在。

+1

请有人可以解释为什么这个职位被拒绝?简单地没有贡献的投票并不具有建设性和简单的粗鲁。 – ProfK 2009-05-28 17:15:39

+0

我并不是要捍卫随机投票,但你的问题是你不想用锤子,而这是我给你的大锤。因为这是一个开发箱,脚本运行速度很快(不像最糟糕的锤子,重新启动),这对我来说似乎很合适。 – MatthewMartin 2009-05-28 17:22:17

0

确保您没有像“Windows桌面搜索”索引该文件夹的进程。

0

这听起来像你有东西持有该文件的开放式句柄;您可以使用Filemon或某些类似的工具来追踪它,看看它握着打开的手柄的过程。

1

我有过类似的问题过去由于工作站的防病毒程序在“错误”时间访问文件。您可以使用另一个工具来确定打开文件的内容:Process Explorer(推荐用于您的个人武器库,坦率地说,即使此文件无效)。

4

如果它是由某个外部进程(如病毒扫描程序或搜索索引器)引起的锁定,则可以尝试使用Windows权限来锁定其他用户的权限以及进程读取文件的权限。默认情况下,Temporary ASP.NET Files目录可供用户,管理员,IIS_USR,SYSTEM和TrustedInstaller使用 - 也就是说,几乎每个人都可以使用该目录。

试用MatthewMartin对不同编译文件夹的建议;

<compilation tempDirectory = “C:\LimitedPermissionCompilationDir\” /> 

然后限制LimitedPermissionCompilationDir文件夹,只是用户和谁需要权限组 - 比如说,IIS_USR如果你在IIS,或您自己的帐户下运行,如果要编译支持基于文件的网络服务器。

无论如何,这是一个相对安全的尝试方法,因为您不必担心影响您正在运行的网站以外的任何其他方面。

1

我在我的web.config中为另一个用户使用ipersonation时发现了这个,并且用户没有权限。卫生署!

9

就我而言,答案很简单 - 从一开始就不是错误。对我而言,ASP.NET每次启动我的Web应用程序时都会在内部抛出它,并且我偶然忘记了“突破所有异常”设置(来自另一个调试会话)。我检查了它,一切正常。

仅供参考,这里的堆栈跟踪:

> mscorlib.dll!System.IO.__Error.WinIOError(int errorCode, string maybeFullPath) Unknown 
    mscorlib.dll!System.IO.FileStream.Init(string path, System.IO.FileMode mode, System.IO.FileAccess access, int rights, bool useRights, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, Microsoft.Win32.Win32Native.SECURITY_ATTRIBUTES secAttrs, string msgPath, bool bFromProxy, bool useLongPath, bool checkHost) Unknown 
    mscorlib.dll!System.IO.FileStream.FileStream(string path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, string msgPath, bool bFromProxy) Unknown 
    mscorlib.dll!System.IO.FileStream.FileStream(string path, System.IO.FileMode mode) Unknown 
    System.Web.dll!System.Web.UI.Util.HasWriteAccessToDirectory(string dir) Unknown 
    System.Web.dll!System.Web.HttpRuntime.SetUpCodegenDirectory(System.Web.Configuration.CompilationSection compilationSection) Unknown 
    System.Web.dll!System.Web.HttpRuntime.HostingInit(System.Web.Hosting.HostingEnvironmentFlags hostingFlags, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) Unknown 
    System.Web.dll!System.Web.HttpRuntime.InitializeHostingFeatures(System.Web.Hosting.HostingEnvironmentFlags hostingFlags, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) Unknown 
    System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) Unknown 
    System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel) Unknown 
    [AppDomain (DefaultDomain, #1) -> AppDomain (/LM/W3SVC/4/ROOT-1-130624548490751465, #2)] 
    System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ApplicationManager.GetAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ApplicationManager.CreateObjectInternal(string appId, System.Type type, System.Web.Hosting.IApplicationHost appHost, bool failIfExists, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ProcessHost.StartApplication(string appId, string appPath, out object runtimeInterface) Unknown