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