正则表达式在web.config中查找会话状态标记

时间:2014-03-26 05:48:52

标签: c# html regex web-config session-state

我可能有一个带有自封标记的简单sesion状态标记

  1. sessionState mode =“StateServer”stateConnectionString =“tcpip = CTSINTCOVOCPRD4:42424”/>

  2. sessionState mode =“StateServer”stateConnectionString =“tcpip = CTSINTCOVOCPRD4:42424”/ sessionState>

  3. sessionState结束标记可能位于同一行或下一行。 sessionState标记也可以在其中包含任何其他设置标记。

    我需要找到所有这些场景来获取完整的sessionState标记并从配置文件中删除它。

    我写了以下几行代码:

                    if (Content.Contains("sessionState"))
                    {
                        string RegularExpressionPattern = @"<sessionState.*?><\/sessionState>|<sessionState.*?>|<sessionState.*?>\n<\/sessionState>";
                        Regex myRegex = new Regex(RegularExpressionPattern, RegexOptions.None);
                        MatchCollection collection = myRegex.Matches(Content);
                        string stripped = collection[0].Value;
                        Content = Content.Replace(stripped, "");
                        return Content;
                    }
    

    内容:配置文件内容

    如果sessionState结束标记位于下一行,或者它在sessionState标记内有任何其他设置标记,我将获得带有自封闭标记的sessionState标记和带有结束标记的sessionState,但是没有获得正确的值。 / p>

    我在这段代码中哪里做错了?

1 个答案:

答案 0 :(得分:1)

为什么不使用:

var sessionStatString = (SessionStateSection)WebConfigurationManager.GetSection("system.web/sessionState");

对于SessionStateSection:import namespace,using System.Web.Configuration;

<强>更新

Regex.Replace(Content, "</?(sessionState|SESSIONSTATE).*?>", string.Empty)

注意:我强烈建议您不要更新配置文件运行时