[英]What is the correct way to handle client side and server side errors on the web?
我是Web开发的新手(虽然不是WinForms developmet的新手),我想知道在客户端和服务器端处理错误的正确有效方法。
例如,用户输入一个坏的邮政编码(使用字母),我想通知用户输入的坏邮政编码,我该如何处理?
我假设这将在客户端,但任何人都可以给我一个示例代码? 你应该使用什么脚本语言? 你应该在屏幕上显示一条消息吗? 你应该看到错误信息吗? 这样做的标准方法是什么?
示例二:用户单击在服务器数据库中运行查询的内容。 发生错误。 如何通知用户错误?
通常在Win Forms中我可以这样做:
try
{
CreateDirectoriesAndSystemFiles();
}
catch (Exception ex)
{
ErrorLogger.LogError(ex.Source, ex.TargetSite.ToString(), "Error creating directories!; " + ex.Message);
MessageBox.Show(ex.Message, "Error creating directories!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
我怎样才能在网络环境中模仿上述内容?
1对于客户端通知,您可以使用Validators
链接: http : //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx
此链接与RequiredFieldValidator
有关
你还有CompareValidator, CustomValidator
等....
链接: http : //msdn.microsoft.com/en-us/library/ms972961.aspx
这是一个很好的解决方案。
2对于处理异常,您可以使用Global.asax
和Applicatio_Error
链接: http : //msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx
大多数人使用jQuery验证,因为它非常容易使用,同时非常强大和灵活。 文档在这里http://docs.jquery.com/Plugins/Validation 。 Microsoft默认将它们包含在MVC 3和4中,并将其用于模型验证客户端,因此如果您使用MS堆栈和MVC这是另一个使用它的好理由。 Web Forms中的情况有所不同,因为您倾向于使用内置的验证控件来处理客户端和服务器端开箱即用的引用http://msdn.microsoft.com/en-us/library/a0z2h4sw(v = vs.100).aspx - 这些通过Custom Validator类型是可以解析的,它们允许您指定自己编写的服务器和客户端方法来处理定制功能。 希望这可以帮助!
asp.net可以针对服务器端错误执行相同的try / catch处理。
就输入验证而言,您应该查看Asp.net输入验证控件
例如#2,您可以重定向到错误页面
try
{
CreateDirectoriesAndSystemFiles();
}
catch (Exception ex)
{
Response.Redirect("Error.aspx?err=" + ex.GetType());
}
并在Error.aspx页面上解析err参数并将其显示给用户。
好主意是在db中记录它(如果你使用它)。
取决于您是否使用webforms或MVC。
在MVC中,通常用于服务器端错误处理我创建了一个ApplicationController类,它继承并将我的错误处理,日志记录和重定向逻辑放在那里然后我的控制器继承了这个类。
对于webforms我会创建一个错误控件并将其包含在我的母版页中,并将服务器端错误反馈给此。
在任何一种情况下,对于客户端,您可以使用jquery和javascript进行字段验证。
你问了很多问题,我会尝试回答一些问题:
关于验证(zipcode示例) - 首先,我不能强调这一点 - 总是验证服务器端的客户端代码,例如javascript,可以很容易地关闭/规避。 即使您在客户端检查事物(并且您应该) - 也要在服务器端检查它们。
也就是说,要使用的验证框架取决于您正在使用的显示框架。 我过去曾使用过jquery的验证 ,并对此感到满意。
你应该使用什么脚本语言? 好吧,如果有一个正确的答案,那么有这么多,没有多大意义,对:)
无论如何, jQuery非常受欢迎,但是knockoutJS也是如此,我听到角度越来越受欢迎。 看看你喜欢哪一个
对于服务器端的意外错误,有一些很好的建议。 我喜欢Aghilas Yakoub的。
祝你好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.