在Web上处理客户端和服务器端错误的正确方法是什么?

时间:2012-09-13 19:29:25

标签: c# asp.net

我是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;
}

如何在网络环境中模仿上述内容?

6 个答案:

答案 0 :(得分:1)

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.asaxApplicatio_Error

链接:http://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx

答案 1 :(得分:1)

大多数人使用jQuery验证,因为它非常容易使用,同时非常强大和灵活。文档在这里http://docs.jquery.com/Plugins/Validation。微软默认将它们包括在MVC 3& 4并将其用于模型验证客户端,因此如果您使用MS堆栈和MVC这是另一个使用它的好理由。在Web窗体中,事情会有所不同,因为您倾向于使用内置的验证控件来处理客户端和服务器端开箱即用的引用http://msdn.microsoft.com/en-us/library/a0z2h4sw(v=vs.100).aspx - 这些可以通过允许您指定的自定义验证器类型来实现您自己编写的服务器和客户端方法,用于处理定制功能。希望这有帮助!

答案 2 :(得分:0)

asp.net可以针对服务器端错误执行相同的try / catch处理。

就输入验证而言,您应该查看Asp.net Input Validation Controls

答案 3 :(得分:0)

例如#2您可以重定向到错误页面

try
{
     CreateDirectoriesAndSystemFiles();
}
catch (Exception ex)
{
     Response.Redirect("Error.aspx?err=" + ex.GetType());
}

并在Error.aspx页面上解析err参数并将其显示给用户。

好主意是在db(如果你使用它)中记录它。

答案 4 :(得分:0)

取决于您使用的是webforms还是MVC。

在MVC中,通常用于服务器端错误处理我创建了一个ApplicationController类,它继承并将我的错误处理,日志记录和重定向逻辑放在那里然后我的控制器继承了这个类。

对于webforms我会创建一个错误控件并将其包含在我的母版页中,并将服务器端错误反馈给它。

在任何一种情况下,对于客户端,您可以使用jquery和javascript进行字段验证。

答案 5 :(得分:0)

你问了很多问题,我会尝试回答一些问题:

    关于验证的
  1. (邮政编码示例) - 首先,我不能强调这一点 - 总是验证服务器端的东西客户端代码,例如javascript,可以很容易地转换关闭/规避。即使您在客户端检查事物(并且您应该) - 也要在服务器端检查它们 也就是说,要使用的验证框架取决于您正在使用的显示框架。我过去曾使用jquery's validation,并对此感到满意。

  2. 您应该使用哪种脚本语言?好吧,如果对那个问题有一个正确的答案,那么拥有这么多,没有多大意义,对吧:) 无论如何,jQuery非常受欢迎,但knockoutJS也是如此,我听到angular越来越受欢迎。看看你喜欢哪一个

  3. 对于服务器端的意外错误,有一些很好的建议。我喜欢Aghilas Yakoub的。

  4. 祝你好运