欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

[EntLibFAQ]“不允許所請求的注冊表訪問權(quán)”的

系統(tǒng) 2545 0

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

Version

Date

Creator

Description

1.0.0.1

2006-5-2

鄭昀 @Ultrapower

草稿

?

繼續(xù)閱讀之前,我們假設(shè)您熟悉以下知識:

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

n ???????? EventLog 和注冊表的關(guān)系

? [ 現(xiàn)象 ]

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

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

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

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

[ 分析 ]

比如我的 ASP.NET 構(gòu)建的 Web 站點(diǎn)中由于用到了 EnterpriseLibrary Caching 庫,所以在客戶生產(chǎn)環(huán)境中部署的時候,當(dāng)部署完畢,第一次瀏覽站點(diǎn)時,我們遭遇了這個錯誤。

?

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

KB 信息

癥狀

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

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

原因

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

?

那么什么情況下,會導(dǎo)致我們的 Enterprise Library 會不顧及 ASP.NET 調(diào)用者的感受,而強(qiáng)行創(chuàng)建新的事件源呢?

實(shí)際上也是因?yàn)橐恍o足輕重的原因。

Enterprise Library 會主動創(chuàng)建一些新的性能計數(shù)器。調(diào)用鏈?zhǔn)沁@樣的:

1 :調(diào)用 Common. InstrumentedEvent Initialize 方法:

AddPerformanceCounter(counterCategory, counterNames, createNewInstance);

2 :而這個 AddPerformanceCounter 函數(shù)中用到了

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

3 PerformanceCounterInstances 呢,又是利用

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

來創(chuàng)建計數(shù)器。 PerformanceCounter 初始化 System.Diagnostics.PerformanceCounter 類的新的只讀實(shí)例或讀 / 寫實(shí)例,并將其與本地計算機(jī)上指定的系統(tǒng)性能計數(shù)器或自定義性能計數(shù)器及類別實(shí)例關(guān)聯(lián)。

但是創(chuàng)建性能計數(shù)器的時候,出了點(diǎn)錯誤,錯誤信息如下所示:

錯誤信息

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

?

所以 Enterprise library 認(rèn)為它需要通知你,通過以下代碼:

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

eventlog.WriteEntry(message_, EventLogger.FailureLogType);

寫一個 Windows 應(yīng)用程序 事件日志。

EventLog 構(gòu)造函數(shù) 的第三個參數(shù) SR.FailureLogSource ,其對應(yīng)的字符串就是“ Enterprise Library Instrumentation ”。

?

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

HKEY_LOCAL_MACHINE\

SYSTEM\

CurrentControlSet\

Services\

Eventlog\Application

下新建一個項(xiàng)叫做“ Enterprise Library Instrumentation ”的。但是, ASP.NET 的用戶身份限制了創(chuàng)建工作。于是,異常被引發(fā)了。并且,一路被拋了出來,導(dǎo)致所有的工作都無法進(jìn)行下去。

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

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

[ 解決 ]

臨時救急的辦法:

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

首先,不讓該站點(diǎn)虛擬目錄啟用匿名訪問,這樣在本機(jī)管理員身份下訪問你的 web 應(yīng)用,因?yàn)槟惝?dāng)前的身份應(yīng)該擁有對注冊表的權(quán)限,所以肯定能做 Enterprise Library 要做的事情。然后,再讓虛擬目錄啟用匿名訪問,再次訪問 Web 應(yīng)用,一切恢復(fù)正常,不再報告“ System.Security.SecurityException: 不允許所請求的注冊表訪問權(quán)。”了。

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

Windows 應(yīng)用程序日志 1

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

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

事件種類 : ?????

事件 ID: 0

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

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

描述 :

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

?

?

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

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

事件種類 : ?????

事件 ID: 0

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

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

描述 :

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

?

?

重新編譯的辦法:

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

?

?

主動 Installutil 的辦法:

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

?

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

在新 Windows2003 環(huán)境下,首先安裝 Enterprise Library

之后運(yùn)行 Microsoft Enterprise Library 安裝目錄下的 src 子文件夾下的

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

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

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

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

installutil Microsoft.Practices.EnterpriseLibrary.Caching.dll

就可以預(yù)先將 Caching 庫所需要的性能計數(shù)器等資源準(zhǔn)備好。 )

?



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


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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品久久国产精品 | 国产99精品一区二区三区免费 | 色精品一区二区三区 | 激情五月婷婷综合网 | 久久精品中文 | 日本高清视频www夜色资源网 | 午夜在线视频观看 | 亚洲免费福利 | 久久久国产这里有的是精品 | 正在播放国产无套露脸 | 精品久久久爽爽久久久AV | 欧美激情视频网站 | 日本久久综合网 | 中文字幕 国产精品 | 九九热线精品视频6一 | 色哟哟哟在线精品观看视频 | 精品视频在线免费看 | 免费看黄的视频网站 | 精品国产一区二区三区性色av | 男女猛烈激情xx00免费视频 | 国产美女www爽爽爽免费视频 | av网站在线播放 | 国产高清在线91福利 | 久久色播 | 午夜人成 | 亚洲狠狠爱 | 成人三级视频 | 男生插女生视频免费 | 午夜视频在线 | www97影院| 黄色一级在线视频 | 午夜激情小视频 | 无码免费一区二区三区免费播放 | 成人午夜免费福利 | 99精品99 | 久久成人免费网 | 九一精品 | 狠狠色丁香婷婷综合久久片 | 欧美国产精品一区二区 | 一级看片免费视频 | 欧美日韩精品国产一区二区 |