从代码C#更改URL重写规则中的Web.Config(Change URL Rewrite Rule

2019-06-24 19:32发布

我想修改从C#代码重写规则。 URL重写规则是驻留在web.config文件。

<system.webServer>
    <rewrite>
      <rules>
        <rule name="partners">
          <match url="^partners$" />
          <action type="Rewrite"
                  url="partners.aspx" />
        </rule>
        <rule name="news">
          <match url="^news$" />
          <action type="Rewrite"
                  url="news.aspx" />
        </rule>
        <rule name="projects">
          <match url="^projects$" />
          <action type="Rewrite"
                  url="projects.aspx" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

我想改变前。 <rule name="partners"> <match url="^partners$" /><rule name="partners"> <match url="^friendship/partners$" />

我怎么能找到节点规则和更新匹配的网址为“新”,其中name =“合作伙伴”;?

这是我对动态URL重写的想法。 感谢,如果您有任何其他的方式。

Answer 1:

我改变值在我的web.config的网站使用此代码的ConnectionString:

可能这个例子可以帮助你(只是改变价值connectionString通过system.webServeradd通过rules等,请告诉我,如果你的作品

XmlDocument myXmlDocument = new XmlDocument();
myXmlDocument.Load("../myPath/web.config");
foreach (XmlNode node in myXmlDocument["configuration"]["connectionStrings"])
{
    if (node.Name == "add")
    {
        if (node.Attributes.GetNamedItem("name").Value == "SCI2ConnectionString")
        {
            node.Attributes.GetNamedItem("connectionString").Value = "new value";
        }
    }
}


Answer 2:

第1步: -下载urlrewrite2.exe 这里

第2步: -写你在web.config中的逻辑

<system.webServer>
  <rewrite>
    <providers>
      <provider name="FileMap" type="FileMapProvider, Microsoft.Web.Iis.Rewrite.Providers, Version=7.1.761.0, Culture=neutral, PublicKeyToken=0545b0627da60a5f">
        <settings>
          <add key="FilePath" value="D:\j\branches\JuzBuzz\App_Data\rewriteurl.txt" />
          <add key="IgnoreCase" value="1" />
          <add key="Separator" value="," />
        </settings>
      </provider>
    </providers>
    <rules>
      <rule name="FileMapProviderTest" stopProcessing="true">
        <match url="(.*)" ignoreCase="false" />
        <conditions logicalGrouping="MatchAll">
          <add input="{FileMap:{R:1}}" pattern="(.+)" ignoreCase="false" />
        </conditions>
        <action type="Rewrite" url="{C:1}" appendQueryString="false" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

第3步: -把你.TXT在App_Code文件夹或您给web.config中的地址的另一个地方文件,TXT文件将有类似的数据

**技术,专家/搜索expert.aspx?CATID = 1

咨询个人成长,专家/搜索expert.aspx?CATID = 2 ** **等



Answer 3:

微软有可用来帮助你Microsoft.Web.Administration.dll,但它需要管理员权限来执行,

https://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration

这是很适合用于WinForms应用程序(诸如IIS管理器)来控制一个IIS服务器,但也可以在其它类型的应用中使用。

我有一个个人项目,该项目是一个自定义MWA实施,对于一些非管理员情况下工作。 如果你有兴趣的话,让我知道。



文章来源: Change URL Rewrite Rule in Web.Config from Code C#