.NET Framework中存在的诸多问题。

来源:互联网 发布:中国房地产大数据年会 编辑:程序博客网 时间:2024/05/01 03:33

以下问题或不足均在.NET Framework 4中存在。


问题一、

在使用Membership.CreateUser时 ,如果你传递一个无效的电子邮件地址,如Anonymous。理应在MembershipCreateStatus状态中会返回这个枚举MembershipCreateStatus.InvalidEmail,但是遗憾的是它会抛出一个FormatException异常,这个枚举显然没有起到作用,应是一个Bug。

所以需要在调用CreateUser方法自己使用正则去验证。


问题二、

在使用Membership时,如果你启用了密码提示问题与答案的话,在使用MembershipUser.GetPassword(passwordAnswer)重载时,如果你提供的密码提示问题对应的答案passwordAnswer与MembershipUser实例所对应的用户的答案不匹配时,该方法会报出一个异常。而不会像Membership.CreateUser时返回一个成功或失败的标志。

您只能去使用try catch去捕获这个异常。异常的发生会导致正常的执行流被打断。显示这里的设计显得很不足。

如果你使用无参的Membership.GetPassword(),是可以取回密码。但是密码提示问题与答案又有什么意义呢?


问题三、

在使用异步的IHttpAsyncHandler时,请看这个方法的签名

 public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)        {}

假设我通过context中获取一个从浏览器中post过来的参数username,但是该username是字符串,按理这样的请求应立即中断,像下面 这样:

        public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)        {           string username= context.Request.Form.Get("username");           if (string.IsNullOrWhiteSpace(username))           {            ???           }}

请问我接下来该怎么写?返回一个null吗,不行。context.Response.End()这样吗?也不行。


欢迎补充。