2012-05-25 29 views
9

Tôi muốn sửa đổi quy tắc viết lại từ mã C#. Quy tắc Ghi đè Url nằm trong tệp web.config. Thay đổi Quy tắc Ghi lại URL trong Web.Config từ Mã 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> 

Tôi muốn thay đổi ví dụ. <rule name="partners"> <match url="^partners$" /> to <rule name="partners"> <match url="^friendship/partners$" />,

làm cách nào tôi có thể tìm quy tắc nút và cập nhật URL đối sánh thành "mới" nơi name = "partners" ;?

đây là ý tưởng của tôi về ghi đè url động. cảm ơn cho bất kỳ cách nào khác nếu bạn có.

+1

Bạn muốn sửa đổi các quy tắc đó từ trong cùng một ứng dụng web hoặc từ trong một số ứng dụng khác? Bạn có biết rằng nếu bạn sửa đổi web.config, ứng dụng sẽ tái chế không? –

+0

Trong cùng một ứng dụng ... bạn nói rằng điều đó là không thể? cảm ơn – levi

+0

Tôi có thể định cấu hình Web.Config tại bất kỳ page_event nào không? ví dụ Page_Init()? – levi

Trả lời

1

tôi thay đổi giá trị cho ConnectionString trong trang web web.config của tôi với mã này:

Có thể ví dụ này có thể giúp bạn (chỉ cần thay đổi giá trị connectionString bởi system.webServeradd bởi rules vv .. Hãy cho tôi biết nếu nó làm việc cho bạn

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

Nó không phải là một cách hợp lý vì trang web sẽ được giảm xuống mỗi khi bạn lưu lại tập tin web.config của bạn – levi

+1

có điều này có nghĩa là để giết trang web ứng dụng của bạn. nó sẽ khởi động lại trang web mỗi thay đổi web.config xin lỗi. tôi sẽ kiểm tra xem chúng tôi có một giải pháp khác ;-) –

+0

xem xét giải pháp này. một câu hỏi khác của tôi: http://stackoverflow.com/questions/10812311/iis-url-dynamic-rewriting-ways – levi

0

bước 1: - tải urlrewrite2.exe Here

Bước 2: - viết bạn logic trong 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> 

bước 3: - Đặt bạn Txt tập tin trong thư mục App_Code hoặc một nơi khác mà bạn đã cung cấp địa chỉ trong web.config, file txt sẽ có dữ liệu như

** công nghệ, chuyên gia/search-expert.aspx? CatID = 1

tư vấn-personal-tăng trưởng, chuyên gia/search-expert.aspx? CatID = 2 ** vv * *

0

Microsoft đã Microsoft.Web.Administration.dll sẵn để giúp bạn ra ngoài, nhưng nó đòi hỏi quyền quản trị để thực hiện,

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

Nó là khá phù hợp cho một ứng dụng WinForms (chẳng hạn như IIS Manager) để kiểm soát một Máy chủ IIS, nhưng cũng có thể được sử dụng trong các loại ứng dụng khác.

Tôi có một dự án cá nhân là triển khai MWA tùy chỉnh hoạt động đối với một số trường hợp không phải quản trị viên. Nếu bạn quan tâm đến nó, hãy cho tôi biết.

Các vấn đề liên quan