亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

[EntLibFAQ]“不允許所請求的注冊表訪問權”的

系統 2471 0

[EntLibFAQ] “不允許所請求的注冊表訪問權”的解釋

Version

Date

Creator

Description

1.0.0.1

2006-5-2

鄭昀 @Ultrapower

草稿

?

繼續閱讀之前,我們假設您熟悉以下知識:

n ???????? Microsoft Enterprise Library June 2005

n ???????? EventLog 和注冊表的關系

? [ 現象 ]

首先,這種情況發生在第一次使用 Microsoft Enterprise Library June 2005 的庫 ( 不限定是哪一個庫,可以是 Caching ,或者 Security) 時,并且你的應用是 Web 應用:

Windows2000 上,你也許會看到錯誤“ 拒絕對注冊表項的訪問 ”;

Windows2003 上,你將看到 System.Security.SecurityException: 不允許所請求的注冊表訪問權。

此種情形,蟈蟈俊在他的《 使用企業庫在某些站點會報試圖執行安全策略不允許的操作異常的解決方法。 》中已經談及了。我下面將試圖詳細說明原因。

[ 分析 ]

比如我的 ASP.NET 構建的 Web 站點中由于用到了 EnterpriseLibrary Caching 庫,所以在客戶生產環境中部署的時候,當部署完畢,第一次瀏覽站點時,我們遭遇了這個錯誤。

?

也許你熟悉 ASP.NET 的這種報錯,知道應該用微軟 KB329291 來解釋 ( http://support.microsoft.com/?scid=kb;zh-cn;329291&spid=810&sid=58 )

KB 信息

癥狀

使用 ASP.NET 在事件日志中創建一個新的事件源時,您可能會收到下面的錯誤信息:

System.Security.SecurityException:Requested registry access is not allowed.

原因

默認情況下, ASP.NET 工作進程的用戶令牌是 ASPNET (或者,對于 Internet 信息服務 [IIS] 6.0 上運行的應用程序是 NetworkService )。由于您的帳戶不具有創建事件源的正確用戶權限,會出現 癥狀 部分中的問題。

?

那么什么情況下,會導致我們的 Enterprise Library 會不顧及 ASP.NET 調用者的感受,而強行創建新的事件源呢?

實際上也是因為一些無足輕重的原因。

Enterprise Library 會主動創建一些新的性能計數器。調用鏈是這樣的:

1 :調用 Common. InstrumentedEvent Initialize 方法:

AddPerformanceCounter(counterCategory, counterNames, createNewInstance);

2 :而這個 AddPerformanceCounter 函數中用到了

PerformanceCounterInstances instances = new PerformanceCounterInstances(category, counterNames[i], createNewInstance);

3 PerformanceCounterInstances 呢,又是利用

new PerformanceCounter( this .categoryName, this .counterName, CurrentInstanceName, false )

來創建計數器。 PerformanceCounter 初始化 System.Diagnostics.PerformanceCounter 類的新的只讀實例或讀 / 寫實例,并將其與本地計算機上指定的系統性能計數器或自定義性能計數器及類別實例關聯。

但是創建性能計數器的時候,出了點錯誤,錯誤信息如下所示:

錯誤信息

Failed to create instances of performance counter 'Total Cache Entries' - 請求的性能計數器不是自定義計數器,它必須初始化為只讀。

?

所以 Enterprise library 認為它需要通知你,通過以下代碼:

EventLog eventlog = new EventLog(SR.LogName, SR.MachineName, SR.FailureLogSource);

eventlog.WriteEntry(message_, EventLogger.FailureLogType);

寫一個 Windows 應用程序 事件日志。

EventLog 構造函數 的第三個參數 SR.FailureLogSource ,其對應的字符串就是“ Enterprise Library Instrumentation ”。

?

這時候,它本希望能夠增加“ Enterprise Library Instrumentation ”為一個新的事件源,就是在注冊表

HKEY_LOCAL_MACHINE\

SYSTEM\

CurrentControlSet\

Services\

Eventlog\Application

下新建一個項叫做“ Enterprise Library Instrumentation ”的。但是, ASP.NET 的用戶身份限制了創建工作。于是,異常被引發了。并且,一路被拋了出來,導致所有的工作都無法進行下去。

這是一個不應該被如此重視的異常錯誤,完全可以忽略。

上面的闡述,是我個人的理解,可能與事實之間存在偏差。

[ 解決 ]

臨時救急的辦法:

我們有一個神奇的解決辦法,是 houxy 找到的“ IIS 虛擬目錄的匿名訪問選擇框點掉再選中”大法:

首先,不讓該站點虛擬目錄啟用匿名訪問,這樣在本機管理員身份下訪問你的 web 應用,因為你當前的身份應該擁有對注冊表的權限,所以肯定能做 Enterprise Library 要做的事情。然后,再讓虛擬目錄啟用匿名訪問,再次訪問 Web 應用,一切恢復正常,不再報告“ System.Security.SecurityException: 不允許所請求的注冊表訪問權。”了。

這時候,你從 Windows 應用程序日志中可以看到這么兩個錯誤日志:

Windows 應用程序日志 1

事件類型 : ????? 錯誤

事件來源 : ????? Enterprise Library Instrumentation

事件種類 : ?????

事件 ID: 0

日期 : ???????????? 2006-4-30

事件 : ???????????? 15:06:00

描述 :

Failed to create instances of performance counter ' Total Cache Entries ' - 請求的性能計數器不是自定義計數器,它必須初始化為只讀。 .

?

?

事件類型 : ????? 錯誤

事件來源 : ????? Enterprise Library Instrumentation

事件種類 : ?????

事件 ID: 0

日期 : ???????????? 2006-4-30

事件 : ???????????? 15:06:00

描述 :

Failed to create instances of performance counter ' Cache Total Turnover Rate ' - 請求的性能計數器不是自定義計數器,它必須初始化為只讀。 .

?

?

重新編譯的辦法:

蟈蟈俊在他的《 使用企業庫在某些站點會報試圖執行安全策略不允許的操作異常的解決方法。 》中已經談及了。不再闡述了。不過我沒有在客戶現場試驗成功。

?

?

主動 Installutil 的辦法:

"在服務器端執行一下: InstallUtil Microsoft.Practices.EnterpriseLibrary.Caching.dll 就好了,其他模塊也是這么做。 "----- liweiguang said.

?

在部署之前主動 InstallService 的辦法:

在新 Windows2003 環境下,首先安裝 Enterprise Library

之后運行 Microsoft Enterprise Library 安裝目錄下的 src 子文件夾下的

InstallServices.bat 。即可徹底解決這個問題。

( 注:不安裝 Enterprise Library 也可以。在海油新大樓環境中,我就沒有安裝 Enterprise Library 。只不過由于沒有進行 InstallServices.bat 的預處理,所以遇到了前面說的這個問題,實際上如果運行了這個 bat 文件中的

if Exist Microsoft.Practices.EnterpriseLibrary.Caching.dll installutil %action% Microsoft.Practices.EnterpriseLibrary.Caching.dll

語句命令,這樣,我們通過

installutil Microsoft.Practices.EnterpriseLibrary.Caching.dll

就可以預先將 Caching 庫所需要的性能計數器等資源準備好。 )

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=706243


[EntLibFAQ]“不允許所請求的注冊表訪問權”的解釋[0508Update]


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美在线不卡 | 在线播放真实国产乱子伦 | 久草热在线 | 日本a毛片在线播放 | 五月婷婷激情五月 | 四虎网站在线观看 | 久久大香伊蕉在人线观看热2 | 国产香蕉视频在线观看 | 国产目拍亚洲精品区一区 | 一级片在线观看视频 | 亚洲男人的天堂久久香蕉网 | 日日狠狠的日日日日 | 欧美国产影院 | 天天插天天干天天射 | 色视在线 | 美女伊人 | 天天射网站 | 香蕉免费看一区二区三区 | 波多野结衣中文字幕一区二区三区 | 国产色综合网 | 免费看一级欧美毛片视频 | 午夜激情婷婷 | 亚洲欧美高清视频 | 红色毛片 | 日韩精品一区二区三区中文3d | 久草小视频 | 99热在线精品播放 | 久久永久影院免费 | 日本在线色视频 | 国产成a人片在线观看视频99 | 伊人免费在线观看 | 久久女同互慰一区二区三区 | 中文xxx视频 | 99视频在线观看高清 | 四虎avtom影院 | 大尺度福利视频在线观看网址 | 青青爽国产手机在线观看免费 | 拍拍拍无挡视频免费观看1000 | 九九伦理 | 伊人成年综合网 | 毛片色情|