Es gab definitiv eine Änderung zwischen dem Standardverhalten in den ASP.NET AJAX Extensions 1.0 und ASP.NET AJAX 3.5. Sie können dies anhand der standardmäßigen EndPostBack-Ereignishandler für Sys.WebForms.PageRequestManager sehen. Die frühere Version zeigt den Fehler unter Verwendung einer Warnung an, während der Fehler den Fehler gerade erst wiederholt.
// ASP.NET AJAX Extensions 1.0
function Sys$WebForms$PageRequestManager$_endPostBack(error, response) {
this._processingRequest = false;
this._request = null;
this._additionalInput = null;
var handler = this._get_eventHandlerList().getHandler("endRequest");
var errorHandled = false;
if (handler) {
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
handler(this, eventArgs);
errorHandled = eventArgs.get_errorHandled();
}
this._dataItems = null;
if (error && !errorHandled) {
alert(error.message);
}
}
// ASP.NET 3.5
function Sys$WebForms$PageRequestManager$_endPostBack(error, executor, data) {
if (this._request === executor.get_webRequest()) {
this._processingRequest = false;
this._additionalInput = null;
this._request = null;
}
var handler = this._get_eventHandlerList().getHandler("endRequest");
var errorHandled = false;
if (handler) {
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
handler(this, eventArgs);
errorHandled = eventArgs.get_errorHandled();
}
if (error && !errorHandled) {
throw error;
}
}
Wenn Sie die Warnung erscheinen in Ihrem ASP.NET AJAX 3.5 Code möchten, müssen Sie nur ein paar kleine Änderungen vorzunehmen.
Zuerst müssen Sie einen Handler für das AsyncPostBackError-Ereignis des ScriptManagers hinzufügen und dann die AsyncPostBackErrorMessage festlegen.
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message;
}
Anschließend müssen Sie einen Handler für das endRequest-Ereignis des clientseitigen PageRequestManagers hinzufügen. Dort können Sie den AsyncPostBackErrorMessage-Wert auf der Serverseite festlegen und eine Warnung verwenden, um die Nachricht für den Benutzer anzuzeigen.
function pageLoad()
{
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
}
function onEndRequest(sender, args)
{
var msg = args.get_error().message;
alert(msg);
args.set_errorHandled(true);
}
Ich hoffe, das hilft.
Also ... niemand benutzt .NET 3.5, oder niemand macht sich Sorgen um Fehler? :) – aquinas