2012-05-25 99 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實施,適用於一些非管理員的情況。如果您對此感興趣,請告訴我。