我可能有一个带有自封标记的简单sesion状态标记
sessionState mode =“StateServer”stateConnectionString =“tcpip = CTSINTCOVOCPRD4:42424”/>
sessionState mode =“StateServer”stateConnectionString =“tcpip = CTSINTCOVOCPRD4:42424”/ sessionState>
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>
我在这段代码中哪里做错了?
答案 0 :(得分:1)
为什么不使用:
var sessionStatString = (SessionStateSection)WebConfigurationManager.GetSection("system.web/sessionState");
对于SessionStateSection:import namespace,using System.Web.Configuration;
<强>更新强>
Regex.Replace(Content, "</?(sessionState|SESSIONSTATE).*?>", string.Empty)
注意:我强烈建议您不要更新配置文件运行时