文章編號: 329065 - 上次校閱: 2005年11月9日 - 版次: 3.2

PRB:在執行索引服務時修改程式碼發生拒絕存取的錯誤

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

徵狀

當您在 AppDomain 載入後存取頁面,例如在 執行 Microsoft 索引服務的電腦上修改 Bin 目錄或 Web.config 檔案時,可能會收到下列的錯誤訊息:

'/MyWebApp' 應用程式中的伺服器錯誤

設定錯誤

描述:處理服務這個請求所需的設定檔案期間發生錯誤。請檢視下列特定錯誤的詳細資料,並適當地修改您的設定檔案。

剖析器錯誤訊息:拒絕存取:'mydll'。

來源錯誤

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:    
					
來源檔案:c:\winnt\microsoft.net\framework\v1.0.3705\Config\machine.config Line:171
版本資訊Microsoft .NET Framework 版本:1.0.3705.0;ASP.NET 版本:1.0.3705.0
如果您在瀏覽器中以滑鼠右鍵按一下頁面,然後按一下 [檢視原始檔],您可以看見 HTML 的原始碼提供更多資訊,包括下列呼叫堆疊。
[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\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&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)
					

發生的原因

如果您執行索引服務 (Cisvc.exe),那麼索引服務可能會在要求 Microsoft ASP.NET 頁面時重新掃瞄 Temporary ASP.NET 檔案。接著 Cisvc.exe 會在 Temporary ASP.NET 檔案目錄上保持鎖定一至五分鐘。鎖定的時間長短依造成 Aspnet_wp.exeprocess (或在 Microsoft Internet Information Services [IIS] 6.0 上執行的 W3wp.exe process) 不載入特定 DLL 的目錄大小而定。

解決方案

如果您沒有在伺服器上使用索引服務,您可以將它停用。如果要執行這項操作,請依照下列步驟執行:
  1. 按一下 [開始],然後按一下 [服務]
  2. 從服務清單中找到 [索引服務],然後從子表單按一下 [索引服務內容]
  3. [索引服務內容] 對話方塊中按一下 [一般] 索引標籤,在 [啟動類型] 下拉式項目清單中按一下 [停用]
  4. 按一下 [確定]

如果您使用索引服務,您可以從索引服務掃瞄的資料夾中排除 Temporary ASP.NET 檔案目錄。如果要執行這項操作,請依照下列步驟執行:
  1. 按一下 [開始],指向 [所有程式],再指向 [系統管理工具],然後按一下 [電腦管理]
  2. 展開 [服務及應用程式] 節點、[索引服務] 節點和 [System] 節點。
  3. 用滑鼠右鍵按一下 [目錄] 資料夾,指向 [新增],然後從子表單中按一下 [目錄],開啟 [新增目錄] 對話方塊。
  4. 按一下 [瀏覽],然後找到 Temporary ASP.NET 檔案目錄。您通常可以在下列路徑找到 Temporary ASP.NET 檔案:c:\<WINDIR>\Microsoft.NET\Framework\<Version Number>\Temporary ASP.NET Files
    注意<Version Number> 是您的電腦上安裝的 .NET Framework 版本。
  5. [要包含索引?] 選項按鈕下面按一下 [否]
  6. 按一下 [確定] 以關閉。
  7. 關閉 [電腦管理] 對話方塊。
  8. 重新啟動索引服務。

其他相關資訊

其他會定期掃瞄目錄的軟體,可能會以類似索引服務鎖定檔案的方式,鎖定位在 Temporary ASP.NET 檔案目錄的檔案。這類軟體包括病毒掃瞄程式和備份軟體。Microsoft 建議您參閱個別軟體的製作商手冊,獲得如何從這些服務停用或排除 Temporary ASP.NET 檔案的資訊。

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Windows Indexing Service 2.0
關鍵字:?
kbconfig kbhttpruntime kbprb kbwebforms KB329065
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。