c# - 从正则表达式中读取捕获组,这些捕获组也是URL重写规则吗?可能?

给定如下的URL重写规则:

 <rule name="RewriteUserFriendlyThings" stopProcessing="true">
        <match url="^cat/sub-cat/(\d+)/([^/]+)/?$" />
        <conditions>
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="cat/sub-cat/detail.aspx?id={R:2}" />
      </rule>


在C#代码中,我需要为我的“书签”按钮(不要问)读出模式第二组(即我的ID)中的值,以处理像这样的动态页面。我使用的是某个CMS,它在发布时会执行操作,因此我们错过了为动态内容添加书签的功能。

因此,我要做的是将web.config加载为XML,并根据 url元素的 match属性中的内容匹配当前URL。但是,我不知道如何参加小组会议。请记住,这需要通用,因此在另一条规则中,该组可以是第三组或第一组。

我有一个反对的白名单。

我尝试使用捕获组 (?<id>\d+),但是web.config不允许它们。

最佳答案

解决此问题的方法是使用IIS 7 URL重写模块的“服务器变量”功能。

我定义了一个新的允许的服务器变量,然后使用IIS URL重写语法{R:2}捕获了我需要的值。然后,我可以使用HttpContext.Request.ServerVariables集合访问该值。