Я определил свое изображение следующим образом:
<Image Source="/Resources/Images/icon.png"/>
Изображение отображается в дизайнере Visual Studio , но при запуске приложения изображение не отображается! Это сделало меня сумасшедшим! Я попытался выполнить все Build Action s с помощью clean / build, не повезло.
В моем случае проблема вызвана тем, что элемент управления (который использует Image ), и само приложение находится в разных проектах. Ресурсы / Изображения находятся в проекте Controls . В результате приложение попыталось найти icon.png в своей собственной папке Debug, но на самом деле оно находится в папке Debug Controls .
Итак, для меня работают два решения:
1) поместите Resources / Images в проект приложения (не очень хорошо, когда есть несколько проектов, которые используют элементы управления из проекта Controls , но он работает)
2) явно указать имя проекта Controls внутри Изображение :
<Image Source="/Controls;component/Resources/Images/icon.png"/>
Вам нужно использовать WebConfigurationManager.OpenWebConfiguration()
: Пример:
Dim myConfiguration As Configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
myConfiguration.ConnectionStrings.ConnectionStrings("myDatabaseName").ConnectionString = txtConnectionString.Text
myConfiguration.AppSettings.Settings.Item("myKey").Value = txtmyKey.Text
myConfiguration.Save()
Я думаю, вам также может потребоваться установить AllowLocation в machine.config. Это логическое значение, указывающее, можно ли настроить отдельные страницы с помощью элемента. Если «allowLocation» является ложным, его нельзя настроить в отдельных элементах.
Наконец, имеет значение, если вы запускаете свое приложение в IIS и запускаете свой тестовый образец из Visual Studio. Идентификатор процесса ASP.NET - это учетная запись IIS, службы ASPNET или NETWORK (в зависимости от версии IIS).
Возможно, необходимо предоставить службы ASPNET или NETWORK. Изменить доступ к папке, где находится web.config.
2012 Это лучшее решение для этого сценария (проверено с помощью Visual & nbsp; Studio & nbsp; 2008 ):
Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
config.AppSettings.Settings.Remove("MyVariable");
config.AppSettings.Settings.Add("MyVariable", "MyValue");
config.Save();
Обновление 2018 => Протестировано против 2015 г. - Asp. net MVC5
var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
config.AppSettings.Settings["MyVariable"].Value = "MyValue";
config.Save();
, если вам нужно проверить элемент, используйте этот код:
var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
if (config.AppSettings.Settings["MyVariable"] != null)
{
config.AppSettings.Settings["MyVariable"].Value = "MyValue";
}
else { config.AppSettings.Settings.Add("MyVariable", "MyValue"); }
config.Save();
И если вы хотите избежать перезагрузки приложения, вы можете переместить раздел appSettings
:
<appSettings configSource="Config\appSettings.config"/>
в отдельный файл. И в комбинации с ConfigurationSaveMode.Minimal
var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
config.Save(ConfigurationSaveMode.Minimal);
вы можете продолжать использовать секцию appSettings
в качестве хранилища для различных параметров без перезапуска приложения и без использования файла с другим форматом, чем нормальный раздел appSettings.
Попробуйте это:
using System;
using System.Configuration;
using System.Web.Configuration;
namespace SampleApplication.WebConfig
{
public partial class webConfigFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Helps to open the Root level web.config file.
Configuration webConfigApp = WebConfigurationManager.OpenWebConfiguration("~");
//Modifying the AppKey from AppValue to AppValue1
webConfigApp.AppSettings.Settings["ConnectionString"].Value = "ConnectionString";
//Save the Modified settings of AppSettings.
webConfigApp.Save();
}
}
}
Изменение web.config обычно приводит к перезапуску приложения.
Если вам действительно нужно, чтобы ваше приложение редактировало свои собственные параметры, вам следует рассмотреть другой подход, например, установить базу данных или создать файл xml с редактируемыми настройками.
Кому нравится прямо в точку,
В вашем Config
<appSettings>
<add key="Conf_id" value="71" />
</appSettings>
в вашем коде (c #)
///SET
ConfigurationManager.AppSettings.Set("Conf_id", "whateveryourvalue");
///GET
string conf = ConfigurationManager.AppSettings.Get("Conf_id").ToString();
Я знаю, что этот вопрос старый, но я хотел опубликовать ответ, основанный на текущем состоянии дел в мире ASP.NET \ IIS, в сочетании с моим опытом в реальном мире.
Недавно я возглавил проект в моей компании, где я хотел консолидировать и управлять всеми приложениями & amp; connectionStrings в наших файлах web.config в одном центральном месте. Я хотел продолжить подход, когда наши настройки конфигурации были сохранены в ZooKeeper из-за того, что проекты зрелости и amp; стабильность. Не говоря уже о том, что ZooKeeper представляет собой конфигурацию и amp; приложение для управления кластерами.
Цели проекта были очень простыми:
Получив техническую часть получения ASP.NET, чтобы поговорить с ZooKeeper, я быстро нашел и ударил стену с помощью следующего кода:
ConfigurationManager.AppSettings.Add(key_name, data_value)
Это утверждение было наиболее логичным, поскольку я хотел добавить новые настройки в коллекцию appSettings. Однако, как упоминал оригинальный плакат (и многие другие), этот кодовый вызов возвращает сообщение об ошибке, указывающее, что коллекция доступна только для чтения.
Проведя немного исследований и увидев все безумные способы, которыми люди работали над этой проблемой, я был очень обескуражен. Вместо того, чтобы отказаться от того, что казалось менее реалистичным сценарием, я решил вскочить и посмотреть, не хватает ли я чего-то.
С небольшим количеством проб и ошибок я обнаружил, что следующий код будет делать именно то, что я хотел;
ConfigurationManager.AppSettings.Set(key_name, data_value)
Используя эту строку кода, теперь я могу загрузить все 85 appSettings от ZooKeeper в моем приложении Application_Start.
Что касается общих утверждений об изменениях в web.config, запускающих переработку IIS, я отредактировал следующие параметры appPool, чтобы отслеживать ситуацию за кулисами;
appPool-->Advanced Settings-->Recycling-->Disable Recycling for Configuration Changes = False
appPool-->Advanced Settings-->Recycling-->Generate Recycle Event Log Entry-->[For Each Setting] = True
С этой комбинацией настроек, если этот процесс должен был вызвать перезагрузку appPool, запись записи журнала должна быть записана, а это не так.
Это приводит меня к выводу, что это возможно , и действительно безопасно загружать настройки приложений с централизованного носителя данных.
Следует отметить, что я использую IIS7.5 в Windows 7. Код будет развернут в IIS8 на Win2012. Если что-либо изменит этот ответ, я соответствующим образом обновлю ответ.