I've used these two configuration files many times before, but I've never taken the time to fully understand how they really work. As most people do, I understand the basics in how to call WebConfigurationManager.AppSettings["key"]
to get config values.
Here are some questions I came up with:
- What happens when you reference a configuration value within a class library, and the library is part of a bigger solution? Does the app.config need to be copied to the output directory in order for the variables to be found? (I assume yes)
- Can you directly use a configuration value from an app.config in another class library?
- Assuming question 3 is "yes", what happens if there are multiple app.config files from different libraries containing configuration values with the same key?
- What happens when you reference the web.config, but in a class library?
- What happens when you reference the app.config, but in a website or web application project?
The underlying answer to all of your questions is the same: Unless you set up something unusual, all assemblies in your project will read from the same configuration file. In a web app, they will all read from "web.config". In any other project type, they will read from the starting assembly's config file.
The app/ web.config that is used is the one that starts the process. Easier if I give an example:
- Assume all projects in a solution have an app or web.config.
- A test in project A calls code in project B that calls a web service in project C which calls code in project D.
In this case code in project A and B will use the app.config in project A. Code in project C and D will use the web.config in project C.
来源:https://stackoverflow.com/questions/1188681/can-someone-provide-a-quick-app-config-web-config-tutorial