4

在 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。

有人可以给我解决这个问题的任何方法吗?

4

1 回答 1

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();
        }
于 2012-09-06T16:45:43.800 回答