我正在扩展asp.net MVC的注册操作。当用户单击注册时,该操作会上载用户照片并将其数据持久保存到数据库,之后需要将用户重定向到登录页面。 现在的问题是,在成功注册时,它不会将用户重定向到登录页面,而是完成注册并将其保留在注册页面上。 但是,如果我上传没有扩展名的文件,则会按预期重定向用户。
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model, HttpPostedFileBase passportUpload)
{
//Some code here
if (ModelState.IsValid && passportUpload != null)
{
var extension = Path.GetExtension(passportUpload.FileName);
var fileNameWithExtension = Path.GetFileName(passportUpload.FileName);
var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(passportUpload.FileName);
string image = "/images/profile/" + model.Email +"/"+ fileNameWithExtension;
string path = System.IO.Path.Combine(Server.MapPath("~/images/profile"), model.Email);
string imageUrl = System.IO.Path.Combine(Server.MapPath("~/images/profile/" + model.Email), fileNameWithExtension);
var directory = Directory.CreateDirectory(path);
model.passportUpload.SaveAs(imageUrl);
var user = new ApplicationUser
{
CategoryId = category.Id,
UserName = model.Email,
Email = model.Email,
FirstName = model.FirstName,
OtherName = model.OtherName,
LastName = model.LastName,
Gender = model.Gender,
PassportUrl = image,
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
//Comment line below to disable auto sign in after registration
//await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
var currentUser = UserManager.FindById(user.Id);
var roleResult = UserManager.AddToRole(currentUser.Id, "Client User");
return RedirectToAction("Account", "Login");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
当用户点击提交时,数据会按预期持久保存到数据库,但是在RedirectToAction之后(&#34;帐户&#34;,&#34;登录&#34;);获取读取控制器传输执行到此代码块:
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (_userManager != null)
{
_userManager.Dispose();
_userManager = null;
}
if (_signInManager != null)
{
_signInManager.Dispose();
_signInManager = null;
}
}
base.Dispose(disposing);
}
如果我更新代码以上传没有扩展名的文件,它会按预期重定向到登录页面。 在上传带有扩展名的文件时以及上传没有文件的文件时,代码的工作原理是否有所不同? 有没有办法解决这个问题? 感谢。