PRB: Access Denied Error When You Make Code Modifications with Index Services Running


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:

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\\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
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.

[FileLoadException]: Access is denied: 'MyWebApp'.<BR/>
at System.Reflection.Assembly.nLoad(AssemblyName fileName, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark&amp; stackMark)<BR/>
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark&amp; stackMark)<BR/>
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark&amp; 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\\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&amp; 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)


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.


If you do not use Index Server on the server, you can disable it. 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 typedrop-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.

Article ID: 329065 - Last Review: Mar 24, 2009 - Revision: 1