PCRE.NET中的C#堆栈溢出错误
我使用(Perl兼容的.NET正则表达式)lib。我有一个有趣的错误,有两个应用程序。一个是Asp.net应用程序,另一个是控制台应用程序。我的控制台应用程序工作正常,但Asp.net应用程序出现错误(Stackoverflow) 我可以为Asp.net应用程序做什么 控制台应用程序:PCRE.NET中的C#堆栈溢出错误,c#,asp.net,.net,pcre,pcre.net,C#,Asp.net,.net,Pcre,Pcre.net,我使用(Perl兼容的.NET正则表达式)lib。我有一个有趣的错误,有两个应用程序。一个是Asp.net应用程序,另一个是控制台应用程序。我的控制台应用程序工作正常,但Asp.net应用程序出现错误(Stackoverflow) 我可以为Asp.net应用程序做什么 控制台应用程序: static void Main(string[] args) { string test = ""; using (var streamReader = new St
static void Main(string[] args)
{
string test = "";
using (var streamReader = new StreamReader(@"c:\file.txt", Encoding.UTF8))
{
test = streamReader.ReadToEnd();
}
var matches = PcreRegex.Matches(test, @"(\/\*(?:(?!\/\*).|(?1))*?\*\/)(*SKIP)(*F)|^\s*CREATE |^\s*ALTER |^\s*DROP |^\s*GRANT ", PcreOptions.MultiLine | PcreOptions.Singleline | PcreOptions.IgnoreCase).ToList();
}
protected void Page_Load(object sender, EventArgs e)
{
string test = "";
using (var streamReader = new StreamReader(@"c:\file.txt", Encoding.UTF8))
{
test = streamReader.ReadToEnd();
}
var matches = PcreRegex.Matches(test, @"(\/\*(?:(?!\/\*).|(?1))*?\*\/)(*SKIP)(*F)|^\s*CREATE |^\s*ALTER |^\s*DROP |^\s*GRANT ", PcreOptions.MultiLine | PcreOptions.Singleline | PcreOptions.IgnoreCase).ToList();
}
Asp.Net应用程序:
static void Main(string[] args)
{
string test = "";
using (var streamReader = new StreamReader(@"c:\file.txt", Encoding.UTF8))
{
test = streamReader.ReadToEnd();
}
var matches = PcreRegex.Matches(test, @"(\/\*(?:(?!\/\*).|(?1))*?\*\/)(*SKIP)(*F)|^\s*CREATE |^\s*ALTER |^\s*DROP |^\s*GRANT ", PcreOptions.MultiLine | PcreOptions.Singleline | PcreOptions.IgnoreCase).ToList();
}
protected void Page_Load(object sender, EventArgs e)
{
string test = "";
using (var streamReader = new StreamReader(@"c:\file.txt", Encoding.UTF8))
{
test = streamReader.ReadToEnd();
}
var matches = PcreRegex.Matches(test, @"(\/\*(?:(?!\/\*).|(?1))*?\*\/)(*SKIP)(*F)|^\s*CREATE |^\s*ALTER |^\s*DROP |^\s*GRANT ", PcreOptions.MultiLine | PcreOptions.Singleline | PcreOptions.IgnoreCase).ToList();
}
错误:
420cc350a653e64458da2ef4f8e4ac89.dll中发生类型为“System.StackOverflowException”的未处理异常
致以最诚挚的问候嘿,我是lib的作者:)这里有一个有趣的错误,你能发布更多的堆栈跟踪吗?@lucastrezesniewski首先感谢你提供了这个lib。我查看了异常详细信息,但没有更多信息。“{无法计算表达式,因为当前线程处于堆栈溢出状态。}”。如何获取详细错误消息?嗯,是的,堆栈溢出完全破坏了应用程序,因此调试器。。。我会尽量在我这方面重复这个问题,但我不能保证时间范围。我从未使用ASP.NET对其进行过测试,但我怀疑这可能是一个与LibZ+appdomains相关的问题。*同时,我打开了一个问题。如果您愿意花几分钟时间,也可以尝试以下操作:克隆PCRE.NET存储库,以x86或x64模式构建解决方案(取决于您的平台),并在ASP.NET解决方案中引用获得的
PCRE.NET.dll
和PCRE.NET.Wrapper.dll
,而不是NuGet包。如果此解决方法有效,则意味着这是一个LibZ问题(我使用它将两个程序集打包到一个DLL中,因此错误中的DLL名称看起来像GUID)。您试图与(\/\*(?:(?!\/\*).|(?1))*?\*/)匹配的是什么,是C注释吗?如果是,为什么需要递归模式,因为注释不能嵌套(第一个*/
关闭注释,即使之前有几个/*
)