Parser Error Message: Access is denied【转】
PRB: Access Denied Error When You Make Code Modifications with Index Services Running
Article ID | : | 329065 |
Last Review | : | June 25, 2004 |
Revision | : | 3.0 |
This article was previously published under Q329065
SYMPTOMS
When you access a page after an AppDomain load, for example, when you modify the Bin directory or the Web.config file on computers running Microsoft Index Services, you may receive the following error message:
Parser Error Message: Access is denied: 'mydll'.
Source Error:
Version Information: Microsoft .NET Framework Version:1.0.3705.0; ASP.NET Version:1.0.3705.0
If you right-click the page in the browser, and then click View Source, you see that the HTML source code reveals additional information, including the following call stack.
Server Error in '/MyWebApp' Application
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.Parser Error Message: Access is denied: 'mydll'.
Source Error:
Line 169: <add assembly=<System.Drawing, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>/> Line 170: <add assembly=<System.EnterpriseServices, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a>/> Line 171: <add assembly=<*>/> Line 172: </assemblies> Line 173:Source File: c:/winnt/microsoft.net/framework/v1.0.3705/Config/machine.config Line: 171
Version Information: Microsoft .NET Framework Version:1.0.3705.0; ASP.NET Version:1.0.3705.0
[FileLoadException]: Access is denied: 'MyWebApp'.<BR/> at System.Reflection.Assembly.nLoad(AssemblyName fileName, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark& stackMark)<BR/> at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)<BR/> at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark)<BR/> at System.Reflection.Assembly.Load(String assemblyString)<BR/> at System.Web.UI.CompilationConfiguration.LoadAssemblies(Hashtable original)<BR/> [ConfigurationException]: Access is denied: 'MyWebApp'.<BR/> (d:/winxp/microsoft.net/framework/v1.0.3215/Config/machine.config line 145)<BR/> at System.Web.UI.CompilationConfiguration.LoadAssemblies(Hashtable original)<BR/> at System.Web.UI.CompilationConfiguration.get_Assemblies()<BR/> at System.Web.UI.CompilationConfiguration.GetAssembliesFromContext(HttpContext context)<BR/> at System.Web.UI.TemplateParser.AppendConfigAssemblies()<BR/> at System.Web.UI.TemplateParser.PrepareParse()<BR/> at System.Web.UI.TemplateParser.Parse()<BR/> at System.Web.UI.TemplateParser.GetParserCacheItemThroughCompilation()<BR/> at System.Web.UI.TemplateParser.GetParserCacheItemInternal(Boolean fCreateIfNotFound)<BR/> at System.Web.UI.TemplateParser.GetParserCacheItemWithNewConfigPath()<BR/> at System.Web.UI.TemplateParser.GetParserCacheItem()<BR/> at System.Web.UI.ApplicationFileParser.GetCompiledApplicationType(String inputFile, HttpContext context, ApplicationFileParser& parser)<BR/> at System.Web.HttpApplicationFactory.CompileApplication(HttpContext context)<BR/> at System.Web.HttpApplicationFactory.Init(HttpContext context)<BR/> at System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context)<BR/> at System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
CAUSE
If you run Index Server (Cisvc.exe), then Index Server may rescan the Temporary ASP.NET Files directory while it requests a Microsoft ASP.NET page. Cisvc.exe then holds a lock on the Temporary ASP.NET Files directory for one to five minutes. The length of time of the lock depends on the size of the directory that causes the Aspnet_wp.exeprocess (or W3wp.exe process for applications that run on Microsoft Internet Information Services [IIS] 6.0) to not load the particular DLL.
RESOLUTION
If you do not use Index Server on the server, you can disable it. To do so, follow these steps:
If you use Index Server, you can exclude the Temporary ASP.NET Files directory from the folders that the Index Server scans. To do so, follow these steps:
1. | Click Start, and then click Services. |
2. | Locate Indexing Service from the list of services, and then click Indexing Service Properties from the subform. |
3. | On the General tab of the Indexing Service Properties dialog box, in the Startup type drop-down item list, click Disabled. |
4. | Click OK. |
If you use Index Server, you can exclude the Temporary ASP.NET Files directory from the folders that the Index Server scans. To do so, follow these steps:
1. | Click Start, point to All Programs, point to Administrative Tools, and then click Computer Management. |
2. | Expand the Services and Applications node, expand the Indexing Service node, and then expand the System node. |
3. | Right-click the Directories folder, point to New, and then click Directory from the subform to open the Add Directory dialog box. |
4. | Click Browse,
and then locate the Temporary ASP.NET Files directory. You typically
find the Temporary ASP.NET files in the following path:
c:/<WINDIR>/Microsoft.NET/Framework/<Version Number>/Temporary ASP.NET Files Note<Version Number> is the version of .NET Framework installed on your computer. |
5. | Click No under the Include in Index? option buttons. |
6. | Click OK to close. |
7. | Close the Computer Management dialog box. |
8. | Restart the Indexing Services service. |
MORE INFORMATION
Other software that is designed to scan directories
at regular intervals may lock the files that are located in the
Temporary ASP.NET Files directory in a manner that is similar to how the
Indexing Service locks the files. Examples of such software include
virus scanners and backup software. Microsoft recommends that you see
the manufacturers' manuals for the individual software for information
about how to disable or to exclude the Temporary ASP.NET Files from
these services.