Я разрабатываю приложение ASP.NET с использованием среды MVC 5. Это приложение в конечном итоге будет развернуто на месте. Поэтому пользователи должны иметь возможность устанавливать и настраивать приложение, прежде чем они смогут начать его использовать. Мне нужно, чтобы они могли указывать такие вещи, как имя базы данных (MSSQL), расположение различных вспомогательных служб и определенные учетные данные, такие как ключи API для сторонних служб.страница конфигурации для приложения mvc 5
В нескольких приложениях MVC 5, которые я использовал, эти параметры можно было бы управлять через форму. Поэтому я подумал о создании контроллера Configurations
с действиями GET и POST Edit. Таким образом, пользователь может установить приложение, а затем перейти на http://myServer/myApp/Config и указать различные настройки там.
Что я не уверен в том, где эти параметры будут сохранены. Будет ли это файл web.config или файл settings.xml или база данных?
Вот странно ... У меня уже есть рабочий раствор с web.config
, который использует код ниже:
public class ConfigController : Controller
{
// GET: Config/Edit/5
[HttpGet]
public ActionResult Edit()
{
ViewBag.DatabaseServer = WebConfigurationManager.AppSettings["DatabaseServer"];
ViewBag.DatabaseName = WebConfigurationManager.AppSettings["DatabaseName"];
ViewBag.PusherClientID = WebConfigurationManager.AppSettings["ClientID"];
ViewBag.PusherAPIKey = WebConfigurationManager.AppSettings["APIKey"];
return View();
}
// POST: Config/Edit/5
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
WebConfigurationManager.AppSettings.Set("DatabaseServer", collection.Get("databaseserver"));
WebConfigurationManager.AppSettings.Set("DatabaseName", collection.Get("databasename"));
WebConfigurationManager.AppSettings.Set("ClientID", collection.Get("pusherclientid"));
WebConfigurationManager.AppSettings.Set("APIKey", collection.Get("pusherapikey"));
return RedirectToAction("Edit");
}
}
И мой web.config
файл:
<appSettings>
...
<add key="DatabaseServer" value="localhost\sqlexpress" />
<add key="DatabaseName" value="MyDatabase" />
<add key="ClientID" value="testID" />
<add key="APIKey" value="testkey" />
</appSettings>
Я могу изменить эти переменные на форму на edit.cshtml
, и они сохраняются хорошо. Две проблемы:
- Я не могу понять, куда они идут. Мне сказали, что они идут в
web.config
, но я проверил оба файлаweb.config
внутри моего приложения, и ни один из них не имеет обновленных значений. В форме я обновляю ClientID до «123», но вweb.config
он все еще говорит «testID», который является исходным значением по умолчанию. - Мне сказали, что обновление
web.config
приведет к перезапуску пула приложений. Однако, похоже, это не так ...
Может кто-нибудь объяснить, что происходит?
Решено ли это? – Nkosi