【问题标题】:YSOD Yellow Screen Of Death JavaScript RegExp - Syntax ErrorYSOD 黄屏死机 JavaScript RegExp - 语法错误
【发布时间】:2011-01-21 23:51:05
【问题描述】:

我在http://regextester.com 建立了这个正则表达式来解析 YSOD,但 VS 抱怨语法错误。我确定我在某个地方错过了逃生机会,但我却一无所获。

这是原始形式。任何帮助表示赞赏。

var rxYSOD = /<!--\s*\[(.*?)]:(\s*.*\s(.*\n)*?)\s*(at(.*\n)*)-->/gs;

更新: 科比指出了明显的地方,让我再次动起来。对于感兴趣的人,这是一个有效的 JavaScript 来测试和解析 ASP.net 黄屏死机 (YSOD) 的 XMLHttpRequest.responseText。

var rxYSOD = /<!--\s*\[(.*?)]:(\s*.*\s(.*[\n\r]*)*?)\s*(at(.*[\n\r]*)*)-->/;
if (rxYSOD.test(text)) {
    // looks like one..
    var ysod = rxYSOD.exec(text);
    errObj = { Message: ysod[2], StackTrace: ysod[4], ExceptionType: ysod[1] };
}

@Kobi - 这就是我想要解析 html 的结果和原因,即使我得到 500:

{
 "message": " Unknown web method ValidateUser.\r\nParameter name: methodName\r\n",
 "stackTrace": "at System.Web.Script.Services.WebServiceData.GetMethodData(String methodName)\r\n   at System.Web.Script.Services.RestHandler.CreateHandler(WebServiceData webServiceData, String methodName)\r\n   at System.Web.Script.Services.RestHandler.CreateHandler(HttpContext context)\r\n   at System.Web.Script.Services.RestHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)\r\n   at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)\r\n   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)\r\n   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)\r\n",
 "exceptionType": "ArgumentException",
 "errorObject": {
  "Message": " Unknown web method ValidateUser.\r\nParameter name: methodName\r\n",
  "StackTrace": "at System.Web.Script.Services.WebServiceData.GetMethodData(String methodName)\r\n   at System.Web.Script.Services.RestHandler.CreateHandler(WebServiceData webServiceData, String methodName)\r\n   at System.Web.Script.Services.RestHandler.CreateHandler(HttpContext context)\r\n   at System.Web.Script.Services.RestHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)\r\n   at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)\r\n   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)\r\n   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)\r\n",
  "ExceptionType": "ArgumentException"
 },
 "statusCode": 500,
 "servicePath": "/Authentication_JSON_AppService.axd",
 "useGet": false,
 "params": {
  "username": "testingUser",
  "password": "testingUser",
  "customCredential": null
 },
 "methodName": "ValidateUser",
 "__typeName": "Salient.ScriptModel.WebServiceError"
}

【问题讨论】:

  • 您不会也获得这些屏幕的状态代码500 Internal Server Error 吗?无论如何,祝你好运!
  • @Kobi,是的,当然可以。这就是为什么我要解析页面,因为它有实际的异常。当信息实际可用时,我最讨厌的就是捕获所有异常消息。

标签: asp.net javascript regex xmlhttprequest yellow-screen-of-death


【解决方案1】:

火狐说:

Error: invalid regular expression flag s
Source Code:
var rxYSOD = /<!--\s*\[(.*?)]:(\s*.*\s(.*\n)*?)\s*(at(.*\n)*)-->/gs; 

删除s 后似乎没问题(当然,它没有经过测试,只是解析正确)。

【讨论】:

  • 谢谢。这是那些深夜之一,我对明显的把握在午夜左右从我的耳朵里漏了出来。
  • r.e. CTRL+SHFT+J - 是的,我经常使用它。我处理了很多 javascript intellisense 代码...
  • 哎呀,再次显示我的无知 - 现在我意识到你在谈论 FF err 控制台。谢谢。
  • 没问题,乐于助人。现在,休息一下。它在我身上:)
【解决方案2】:

标志 s 在 Javascript 中无效。要替换,请使用replace 方法。

【讨论】:

  • 谢谢,马克。你是对的,但不是试图替换,只是匹配。 Kobi 也成功了。
猜你喜欢
  • 2014-03-12
  • 2011-05-14
  • 2010-10-27
  • 2011-01-11
  • 2011-07-23
  • 1970-01-01
  • 2011-12-16
  • 2013-04-21
  • 2011-06-24
相关资源
最近更新 更多