C# .NET Webforms -> ajaxcontroltoolkit.net -> AsyncFileUpload,触发 OnClientUploadError 服务器端
C# .NET Webforms -> ajaxcontroltoolkit.net -> AsyncFileUpload, trigger OnClientUploadError serverside
作为参考,这是我在这里讨论的控件:AjaxControlToolKit AsyncFileUpload。
上下文:对遗留 .NET webforms(代码隐藏)应用程序的维护。我被要求显示服务器端发生的错误。
不可能只在后面的代码中设置标签,因为控件执行 AsyncFileUpload。
正如API描述的那样,控件提供:OnClientUploadError
所以我将其添加到控件中:
<ajaxToolkit:AsyncFileUpload ID="fuImportEpAuth" runat="server"
OnClientUploadStarted="ImportEpAuthStartUpload"
OnClientUploadComplete="ImportEpAuthUploadComplete"
OnUploadedComplete="fuImportEpAuth_UploadedComplete"
OnClientUploadError="ImportEpAuthError" />
<asp:Label ID="lblImportWccAuth" runat="server" />
并在页面中添加了以下 javascript:
function ImportEpAuthError(sender, args) {
var errorText = args.get_errorMessage();
var errorLabel = document.getElementById('cphContent_lblImportWccAuth');
errorLabel.innerText = errorText;
errorLabel.style.color = "red";
$.unblockUI();
}
代码已执行,标签显示错误消息。
请关注:var errorText = args.get_errorMessage();
它包含此消息:
服务器响应错误:“对象引用未设置到对象的实例。”
我的问题或挑战是:它应该显示我抛出的错误消息。
(此代码是服务器端的)
try
{
// Upload and process file
UploadAndProcessFile(importType, fileUpload, sPath, settingsName);
}
catch (Exception ex)
{
//throw new Exception(ex.Message, ex);
throw new Exception("Please help me Whosebug, I need to show this message!!!", ex);
}
如果我能解决这个问题,那么我就可以完成并将修复程序交付到生产环境中。感谢您的帮助!
删除 InnerException 将导致以下消息:
服务器响应错误:'请帮助我的 Whosebug,我需要显示此消息!!!'
//throw new Exception("Please help me Whosebug, I need to show this message!!!", ex);
throw new Exception("Please help me Whosebug, I need to show this message!!!");
我现在可以访问错误消息客户端,我现在可以随意显示它了。
解决方案是实现:OnClientUploadError
(重新)抛出没有 innerexception 的异常。
此解决方案还将回答我在 Whosebug 上阅读的其他一些问题。请 link 他们回答这个问题。
作为参考,这是我在这里讨论的控件:AjaxControlToolKit AsyncFileUpload。
上下文:对遗留 .NET webforms(代码隐藏)应用程序的维护。我被要求显示服务器端发生的错误。
不可能只在后面的代码中设置标签,因为控件执行 AsyncFileUpload。
正如API描述的那样,控件提供:OnClientUploadError
所以我将其添加到控件中:
<ajaxToolkit:AsyncFileUpload ID="fuImportEpAuth" runat="server"
OnClientUploadStarted="ImportEpAuthStartUpload"
OnClientUploadComplete="ImportEpAuthUploadComplete"
OnUploadedComplete="fuImportEpAuth_UploadedComplete"
OnClientUploadError="ImportEpAuthError" />
<asp:Label ID="lblImportWccAuth" runat="server" />
并在页面中添加了以下 javascript:
function ImportEpAuthError(sender, args) {
var errorText = args.get_errorMessage();
var errorLabel = document.getElementById('cphContent_lblImportWccAuth');
errorLabel.innerText = errorText;
errorLabel.style.color = "red";
$.unblockUI();
}
代码已执行,标签显示错误消息。
请关注:var errorText = args.get_errorMessage();
它包含此消息:
服务器响应错误:“对象引用未设置到对象的实例。”
我的问题或挑战是:它应该显示我抛出的错误消息。
(此代码是服务器端的)
try
{
// Upload and process file
UploadAndProcessFile(importType, fileUpload, sPath, settingsName);
}
catch (Exception ex)
{
//throw new Exception(ex.Message, ex);
throw new Exception("Please help me Whosebug, I need to show this message!!!", ex);
}
如果我能解决这个问题,那么我就可以完成并将修复程序交付到生产环境中。感谢您的帮助!
删除 InnerException 将导致以下消息:
服务器响应错误:'请帮助我的 Whosebug,我需要显示此消息!!!'
//throw new Exception("Please help me Whosebug, I need to show this message!!!", ex);
throw new Exception("Please help me Whosebug, I need to show this message!!!");
我现在可以访问错误消息客户端,我现在可以随意显示它了。
解决方案是实现:OnClientUploadError
(重新)抛出没有 innerexception 的异常。
此解决方案还将回答我在 Whosebug 上阅读的其他一些问题。请 link 他们回答这个问题。