我让用户在以下代码中注册我的应用程序:
[System.Web.Http.HttpPost]
[System.Web.Http.AllowAnonymous]
//[ValidateAntiForgeryToken]
//public HttpResponseMessage Register(RegisterModel model, string returnUrl)
public UserProfileDto Register(RegisterModel model)
{
if (ModelState.IsValid)
{
if (WebSecurity.UserExists(model.UserName))
{
throw new HttpResponseException(HttpStatusCode.Conflict);
}
else
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
InitiateDatabaseForNewUser(model.UserName);
FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
var responseMessage = new HttpResponseMessage(HttpStatusCode.Redirect);
responseMessage.Headers.Location = new Uri("http://www.google.com");
return _service.GetUserProfile(WebSecurity.CurrentUserId);
}
catch (MembershipCreateUserException e)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
}
}
// If we got this far, something failed
throw new HttpResponseException(HttpStatusCode.NotFound);
}
我的问题:如果我遇到这些异常之一,我想告诉用户“嘿,该用户名已经存在!” 或“哎呀,发生了什么事。我们正在调查。” 等客户端,我应该如何处理这个?只需检查标题中的状态并相应地向视图发送一些内容?
这是否意味着每个可能的错误都应该使用不同的状态码?这似乎是错误的......这让我问 - 我应该将某种与状态相关的数据发送回客户端吗?如果是这样,我的返回类型(在本例中为 UserProfileDto)是否应该包含一个我可以填充但我认为适合我的控制器的“状态”字段?
抱歉,我在那里问了一堆......只是想弄清楚如何正确地做到这一点。