Iis 7 是否可以从Azure ServiceConfiguration文件读取IIS重写规则?

Iis 7 是否可以从Azure ServiceConfiguration文件读取IIS重写规则?,iis-7,url-rewriting,azure,Iis 7,Url Rewriting,Azure,是否可以从Azure ServiceConfiguration文件而不是web.config读取IIS重写规则 出现的问题是,我们有友好的url指向某些内容管理的每周更新的页面,因此每周都会创建一个新的url。旧的文件存储在新闻列表存档中,因此无法进行覆盖 我们希望尽量避免每周上传Azure站点文件,并希望能够通过更改serviceconfig中的值快速(立即)响应可能的链接更改 有人知道这是否可行,或者是否有其他解决方案 谢谢是的,您可以在运行时使用IIS管理api中的配置编辑器类更改您的角色

是否可以从Azure ServiceConfiguration文件而不是web.config读取IIS重写规则

出现的问题是,我们有友好的url指向某些内容管理的每周更新的页面,因此每周都会创建一个新的url。旧的文件存储在新闻列表存档中,因此无法进行覆盖

我们希望尽量避免每周上传Azure站点文件,并希望能够通过更改serviceconfig中的值快速(立即)响应可能的链接更改

有人知道这是否可行,或者是否有其他解决方案


谢谢

是的,您可以在运行时使用IIS管理api中的配置编辑器类更改您的角色以修改web.config。我还没有尝试过,但它应该允许您在启动期间从Azure配置加载设置,然后应用到您角色的运行时实例。因此,您可能会在web角色的global.asax的Application_start部分中设置此选项

或者,您可以使用启动任务在角色启动时以编程方式构建web.config

对于第一种方法:

在iis.net上进行一些研究,然后阅读以下iis论坛帖子:

从用户ruslany处获取一个示例(在适当的时候给予积分,但粘贴以便查看):


是的,您可以在运行时使用IIS管理api中的配置编辑器类更改角色以修改web.config。我还没有尝试过,但它应该允许您在启动期间从Azure配置加载设置,然后应用到您角色的运行时实例。因此,您可能会在web角色的global.asax的Application_start部分中设置此选项

或者,您可以使用启动任务在角色启动时以编程方式构建web.config

对于第一种方法:

在iis.net上进行一些研究,然后阅读以下iis论坛帖子:

从用户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();
        }