2013-12-09 37 views
1

我有以下服务方法,在给出以下宁静url时调用http://xxxxxxxxx/api/checkemail?email={email}如果电子邮件的长度超过254个字符,则我想要抛出一个参数超出范围的异常,这可以正常工作,并覆盖不起作用的http响应状态码。HttpResponse在设置为自定义值之后返回状态代码400

当我在fiddler中执行url而不是返回状态码94043(我想使用的一个随机数)时,它返回了400个错误的请求。任何想法为什么?

public bool CheckIfUserExists(string email) 
    { 
     if (email.Length > 254) 
     { 
      HttpContext.Current.Response.StatusCode = 94043; 
      HttpContext.Current.Response.Status = "The email exceeds the maximum character limit";  
      throw new ArgumentOutOfRangeException("Email", "The email address is greater than 254 characters"); 
     } 
     return CheckIfUserExists(email); 
    } 
+2

它可能不会让你因为你不应该发明你自己的状态代码而不是Http规范的一部分,我猜这个框架会强制执行它。一般来说,4xx意味着某种用户错误,因此您应该返回400个错误请求或其他4xx错误代码 – Ben

回答

1

将使用WebFaultException类。它避免了必须管理httpresponse对象。

public bool CheckIfUserExists(string email) 
    { 
     if (email.Length > 254) 
     {     
      throw new WebFaultException<string>("{EmailTooLong" + ":" + "Error 94043" + "}", System.Net.HttpStatusCode.BadRequest); 
     } 
     return DBUtility.CheckIfUserExists(email); 
    }