提问人: 提问时间:11/4/2009 最后编辑:Jason Plank 更新时间:6/29/2012 访问量:3576
ScriptManager1.AsyncPostBackErrorMessage 未显示错误消息
ScriptManager1.AsyncPostBackErrorMessage not showing error message
问:
我一直使用以下两段代码(用于工作)来捕获 Ajax。asyncPostBackError
<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" />
和
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message;
}
但是现在,即使在此事件处理程序函数中捕获了未处理的异常,并且设置了异常消息,无论异常消息是什么,我总是在警报框中的页面中收到相同的错误报告,说:AsyncPostBackErrorMessage
Error: Sys.WebForms.PageRequestManagerParserErrorException: The message recieved from the server could not be parsed. Common causes for this error are when the response is modified by calls to the Respnse.Write() ....
该错误与遇到未处理的异常且未连接事件处理程序方法时遇到的错误相同。asyncPostBack
Scriptmanger's
asyncPostBackError
无论我做什么,我都会收到相同的错误。是什么原因导致的?
答:
从 VS 2005 升级到 VS 2008 后,我似乎遇到了同样的问题。 我使用以下代码:
if (e.Exception is LandingPageUIExceptionInvalidMSISDN)
{
msgresolved = "ErrorPopUpInvalidNumber";
ScriptManager.GetCurrent(Page).AsyncPostBackErrorMessage = msgresolved;
}
以便处理异常并显示正确的错误消息。当在 JavaScript 中执行以下操作时,会在客户端正确分配:AsyncPostBackErrorMessage
var ErrorPopUpDivID = e.get_error().message;
alert(ErrorPopUpDivID);
这不是我签署的.它曾经也对我有用。我将尝试弄清楚它是否可能是 .NET 3.5 问题。ErrorPopUpDivID
AsyncPostBackErrorMessage
最后,以下 3 行 JavaScript 解决了我的问题:
var ErrorPopUpDivID = e.get_error().message;
var re = new RegExp("Sys.*: ", "g");
ErrorPopUpDivID = ErrorPopUpDivID.replace(re, "");
这可能是一个黑暗中的镜头,但可能在调用函数后会发生全局异常处理。如果该异常处理正在对错误页面执行 a,则脚本管理器将无法解析发回的 HTML。ScriptManager1_AsyncPostBackError
server.transfer
这发生在我的一个网站上,并通过将 Server.ClearError() 添加到函数来解决。这会阻止调用函数。ScriptManager1_AsyncPostBackError
Global.Application_Error
评论