上传带扩展名的文件后,注册操作不会重定向到登录页面

时间:2017-09-22 12:55:13

标签: c# asp.net-mvc

我正在扩展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);
}

如果我更新代码以上传没有扩展名的文件,它会按预期重定向到登录页面。 在上传带有扩展名的文件时以及上传没有文件的文件时,代码的工作原理是否有所不同? 有没有办法解决这个问题? 感谢。

0 个答案:

没有答案