2012-05-25 9 views
9

Ich möchte Rewrite-Regel von C# -Code ändern. Die URL-Rewrite-Regel befindet sich in der Datei web.config. URL-Rewrite-Regel in Web.Config ändern von Code C#

<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> 

Ich möchte für die Ex ändern. <rule name="partners"> <match url="^partners$" /> zu <rule name="partners"> <match url="^friendship/partners$" />,

Wie finde ich Knoten Regel und Update Übereinstimmung URL zu "neuen" wo Name = "Partner" ;?

das ist meine Idee für dynamisches URL-Rewriting. Danke für andere Wege, wenn Sie haben.

+1

Sie möchten diese Regeln in derselben Webanwendung oder in einer anderen Anwendung ändern? War Ihnen bewusst, dass die Anwendung recycelt wird, wenn Sie web.config ändern? –

+0

Innerhalb der gleichen Anwendung ... Sie sagen, dass es unmöglich ist? danke – levi

+0

Kann ich Web.Config bei jedem page_event konfigurieren? Ex. Page_Init()? – levi

Antwort

1

ich Wert ändern in meinem web.config Website mit diesem Code connection:

dieses Beispiel können Sie sein kann helfen (nur den Wert connectionString ändern, indem Sie system.webServer und add von rules etc .. Bitte sagen Sie mir, wenn es funktioniert für Sie

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

Es ist kein vernünftiger Weg, da die Website jedes Mal heruntergefahren wird, wenn Sie Ihre web.config Datei erneut speichern. – levi

+1

ja das wird bedeuten, Ihre Anwendungswebsite zu beenden. es wird die website bei jeder änderung neu starten web.config sorry .i wird prüfen, ob wir eine andere lösung haben ;-) –

+0

bedenken sie diese lösung. eine andere Frage von mir: http://stackoverflow.com/questions/10812311/iis-url-dynamic-rewriting-ways – levi

0

Schritt 1: - herunterladen urlrewrite2.exe Here

Schritt 2: - schreiben Sie Logik in 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> 

Schritt 3: - Setzen Sie Datei in Ordner App_Code oder einen anderen Ort .txt, für die Sie die Adresse in web.config gegeben haben, txt-Datei werden die Daten haben wie

** Technologie, Experte/search-expert.aspx? CatId = 1

Beratung Personal-Wachstum, Experte/search-expert.aspx? CatId = 2 ** usw. * *

0

Microsoft hat Microsoft.Web.Administration.dll zur Verfügung um Ihnen zu helfen, aber es erfordert Berechtigungen Administrator auszuführen,

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

Es ist für eine WinForms-Anwendung gut geeignet ist (wie IIS-Manager) zu steuern ein IIS-Server, kann aber auch in anderen Arten von Anwendungen verwendet werden.

Ich habe ein persönliches Projekt, das eine benutzerdefinierte MWA-Implementierung ist, die für einige Nicht-Administrator-Fälle funktioniert. Wenn Sie daran interessiert sind, lassen Sie es mich wissen.