2012-08-06 46 views
4

在FeatureActivated事件(WebApplication作用域)上我想讀取web.config以從中獲取連接字符串。我用下面的代碼打開web.config:在使用PowerShell激活Feature時使用FeatureActivated事件讀取web.config

Configuration rootWebConfig = WebConfigurationManager.OpenWebConfiguration("/", webApplication.Name); 

一切工作正常,當我通過Web界面激活該功能,但是當我試圖通過PowerShell的(啓用-SPFeature)做相同的代碼失敗。從我所看到的代碼打開一個錯誤的web.config從路徑C:\ inetpub \ wwwroot \ web.config(不存在)而不是C:\ inetpub \ wwwroot \ wss \ VirtualDirectories \\ web.config。

有人能給我解決這個問題的任何解決方法嗎?

+0

我面臨同樣的問題。你有沒有找到解決方案? – 2012-09-06 13:54:33

回答

2

我發現了一個解決方案,以滿足我的要求。與你分享,以防萬一:

 using (SPWeb web = properties.Feature.Parent as SPWeb) 
     { 
      SPWebApplication webApp = web.Site.WebApplication; 
      Configuration config = WebConfigurationManager.OpenWebConfiguration("/", webApp.Name); 
      // App settings are retrieved this way 
      config.AppSettings.Settings["someAppSettingKey"].Value; 

      // Connection string settings are retrieved this way 
      config.ConnectionStrings.ConnectionStrings["someDBConnectionString"].ConnectionString 
      web.Site.Dispose(); 
     }