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

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

系統(tǒng) 2790 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 上,你也許會看到錯誤“ 拒絕對注冊表項的訪問 ”;

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

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

[ 分析 ]

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

?

也許你熟悉 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īng)用程序是 NetworkService )。由于您的帳戶不具有創(chuàng)建事件源的正確用戶權(quán)限,會出現(xiàn) 癥狀 部分中的問題。

?

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

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

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 類的新的只讀實例或讀 / 寫實例,并將其與本地計算機(jī)上指定的系統(tǒng)性能計數(shù)器或自定義性能計數(shù)器及類別實例關(guān)聯(lián)。

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

錯誤信息

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

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

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

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

[ 解決 ]

臨時救急的辦法:

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

首先,不讓該站點虛擬目錄啟用匿名訪問,這樣在本機(jī)管理員身份下訪問你的 web 應(yīng)用,因為你當(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è)庫在某些站點會報試圖執(zhí)行安全策略不允許的操作異常的解決方法。 》中已經(jīng)談及了。不再闡述了。不過我沒有在客戶現(xiàn)場試驗成功。

?

?

主動 Installutil 的辦法:

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

?

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

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

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

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

( 注:不安裝 Enterprise Library 也可以。在海油新大樓環(huán)境中,我就沒有安裝 Enterprise Library 。只不過由于沒有進(jìn)行 InstallServices.bat 的預(yù)處理,所以遇到了前面說的這個問題,實際上如果運行了這個 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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99精品视频免费观看 | 91精品国产福利在线观看性色 | 欧美亚洲另类久久综合 | 这里只有精品视频 | 日韩欧美国产一区二区三区 | 在线免费观看视频a | 亚洲一级毛片免费看 | 亚洲最大黄色网址 | 国内精品久久久久久久久久久久 | 日本一级淫片a的一级欧美 日本一级淫片a免费播放 | 日本一区二区三区高清在线观看 | 四虎精品成在线播放 | 国产欧美精品午夜在线播放 | 欧美艹逼视频 | 日韩免费在线 | 日本视频久久 | 天天拍天天干 | 人人干人 | 久久久久夜色精品波多野结衣 | 国产精品1区2区3区 国产精品1区2区3区在线播放 | 久久女人| 五月婷婷开心综合 | 国产精品久久久久久久久久久久 | 五月天天爱| 丰满寡妇一级毛片 | 国产自产视频在线观看香蕉 | 国产精品福利尤物youwu | 精品一区二区三区中文字幕 | 欧美日韩亚洲在线观看 | 久久精品福利视频 | 亚洲欧美国产精品专区久久 | 奇米成人影视 | 亚洲女人逼 | 日韩欧美一区二区三区不卡 | 97在线观看免费观看高清 | 免费一级大毛片a一观看不卡 | 四虎影视网 | 国产成人永久在线播放 | 精品免费国产一区二区三区 | 亚洲美女性生活视频 | 国产精品男人的天堂 |