简体   繁体   中英

Accessing Web.config from another Project

I am writing a test platform for some semi-automated testing using a Console application, but I need to get the connection string from the project I am testing. I don't want to reference the other application directly or otherwise have an accessor in the project I'm testing.

What I've managed to do so far is create a link to the other project's Web.config file in my TestUtility project, and I've set it to Copy if newer . It's the only Web.config in my test project's root folder, but WebConfigurationManager.OpenWebConfiguration(null) seems to be opening some OTHER Web.config, as the only connection string in it refers to .\\SQLEXPRESS (not in any file in my solution, my path would be .\\sql2008 in this configuration - which varies).

Any hints or tips as to how to access that config section from another project?

(Yay first question)

Better late than never:

var filePath = @"D:\PathToConfig\Web.config";
var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
var configFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

I can't take the credit for this one though, I found it here !

The solution I found was to open it as an XDocument and parse it manually:

        XDocument xdoc = XDocument.Load("Test/Web.config");

        var path = xdoc.Element("configuration").Element("connectionStrings").Element("add").Attribute("connectionString").Value;

Though if you had multiple connection strings, you would want to use the .Elements("add") method on the connectionStrings element and iterate over the various strings.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM