2012-05-25 31 views
9

我想修改C#代码中的重写规则。 Url重写规则驻留在web.config文件中。 从代码C中更改Web.Config中的URL重写规则#

<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$" />,

如何查找节点规则并将匹配网址更新为“new one”,其中name =“partners”;?

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

+1

您想要从同一个Web应用程序或某个其他应用程序中修改这些规则吗?你是否知道,如果你修改web.config应用程序将回收? –

+0

在同一个应用程序中... 你说这是不可能的?谢谢 – levi

+0

我可以在任何page_event配置Web.Config吗?恩。 Page_Init()? – levi

回答

1

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

可能这个例子可以帮助你(通过rules等。 请告诉我,如果system.webServeradd只需更改值connectionString它为你工作

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"; 
     } 
    } 
} 
+1

这不是一个合理的方式,因为每次你重新保存你的web.config文件时,网站都会关闭。 – levi

+1

是的,这意味着你的应用程序网站将被终止。它会重新启动网站,每次更改web.config对不起.i会检查我们是否有其他解决方案;-) –

+0

考虑这个解决方案。我的另一个问题:http://stackoverflow.com/questions/10812311/iis-url-dynamic-rewriting-ways – levi

0

第1步: -下载urlrewrite2.exe Here

步骤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 **等* *

0

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

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

这是相当适合WinForms应用程序(如IIS管理器)来控制IIS服务器,但也可以用于其他类型的应用程序。

我有一个个人项目,这是一个自定义的MWA实施,适用于一些非管理员的情况。如果您对此感兴趣,请告诉我。