以下问题或不足均在.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()这样吗?也不行。
欢迎补充。