在FeatureActivated事件(WebApplication scoped)上我想读取web.config以从中获取连接字符串。我使用以下代码打开web.config:
Configuration rootWebConfig = WebConfigurationManager.OpenWebConfiguration("/", webApplication.Name);
当我通过Web界面激活该功能时,一切正常,但当我尝试通过PowerShell(Enable-SPFeature)执行相同操作时,代码失败。从我看到的,代码从路径C:\ inetpub \ wwwroot \ web.config(不存在)而不是C:\ inetpub \ wwwroot \ wss \ VirtualDirectories \\ web.config打开一个错误的web.config。
有人可以为我解决这个问题吗?
答案 0 :(得分: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();
}