Можно ли прочитать правила перезаписи IIS из файла Azure ServiceConfiguration? - PullRequest
1 голос
/ 14 марта 2011

Можно ли прочитать правила перезаписи IIS из файла Azure ServiceConfiguration вместо файла web.config?

Возникающая проблема заключается в том, что у нас есть дружественные ссылки на определенные еженедельно обновляемые страницы, которые управляются контентом, поэтому новый URL создается каждую неделю.Старые хранятся в архиве списка новостей, поэтому перезапись не возможна.

Мы хотели бы попытаться избежать загрузки файлов сайта Azure каждую неделю и хотим, чтобы можно было быстро (немедленно) отвечать на них.к возможным изменениям ссылки путем изменения значений в serviceconfig.

Кто-нибудь имеет какие-либо идеи, если это возможно, или есть ли другое решение?

Спасибо

1 Ответ

1 голос
/ 14 марта 2011

Да, вы можете изменить свою роль для изменения файла web.config во время выполнения с помощью классов редактора конфигурации в API IIS Admin. Я не пробовал этого, но он должен позволить вам загрузить настройки из конфигурации Azure во время запуска, а затем применить к экземпляру среды выполнения вашей роли. Таким образом, вы, скорее всего, установите это в разделе Application_start global.asax веб-роли.

В качестве альтернативы, вы можете программно создать web.config во время запуска роли, используя задачу запуска.

Для 1-го подхода:

Проведите исследование на iis.net, а затем прочитайте это сообщение на форуме IIS: http://forums.iis.net/t/1150481.aspx

Возьмите образец от пользователя ruslany (укажите должное, но вставьте, чтобы вы его увидели):

using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Default Web Site");

            ConfigurationSection rulesSection = config.GetSection("system.webServer/rewrite/rules");

            ConfigurationElementCollection rulesCollection = rulesSection.GetCollection();

            ConfigurationElement ruleElement = rulesCollection.CreateElement("rule");
            ruleElement["name"] = @"MyTestRule";
            ruleElement["stopProcessing"] = true;

            ConfigurationElement matchElement = ruleElement.GetChildElement("match");
            matchElement["url"] = @"foo\.asp";

            ConfigurationElement conditionsElement = ruleElement.GetChildElement("conditions");

            ConfigurationElementCollection conditionsCollection = conditionsElement.GetCollection();

            ConfigurationElement addElement = conditionsCollection.CreateElement("add");
            addElement["input"] = @"{HTTP_HOST}";
            addElement["pattern"] = @"www\.foo\.com";
            conditionsCollection.Add(addElement);

            ConfigurationElement actionElement = ruleElement.GetChildElement("action");
            actionElement["type"] = @"Rewrite";
            actionElement["url"] = @"bar.asp";
            rulesCollection.Add(ruleElement);

            serverManager.CommitChanges();
        }
...