ASP.Net 无法成功登录/注册(在本地工作,但在 Azure 上不起作用)



第2版:我发现它正确登录并提供了用户的cookie(.AspNet.ApplicationCookie),但当它在那里时(在部署的WebApp版本上运行时,而不是在本地),什么都不会加载,所以永久加载只是重定向到主页,我不知道它可能是什么。

一开始我觉得是数据库连接出了问题。。。但我只是通过在本地的管理面板中登录才意识到,我试图使用部署的Web应用程序注册的帐户已经成功地在数据库中注册,即使在注册后,你会被困在一个永恒的加载屏幕中。。

我不知道可能出了什么问题,因为它在本地是100%可用的,但不知何故,当它部署在Azure中时,你似乎无法登录。

编辑:不知怎么的,今天早上我试着登录,结果出现了运行时错误:

"/"应用程序中的服务器错误。运行时错误描述:处理您的请求时发生异常。此外,执行自定义时发生另一个异常第一个异常的错误页面。请求已终止

现在我被问到更多信息:

在本地测试时,请确保应用程序不是在上的项目的App_Data文件夹中创建任何.mdf文件文件系统。如果是的话,这无疑表明了它为什么有效在本地,但在部署到azure时不会。从技术上讲,你可以独立的连接字符串,从而为您的应用程序和您的应用程序服务。

当我在本地测试时,App_Data文件夹中没有文件,因为它在部署时使用与在本地运行时相同的数据库->可以在本地和部署上注册新帐户

现在来看:

请使用web.config文件更新您的问题。确保

包括下的成员资格和角色管理部分

异常消息指示连接用于应用程序服务的字符串名称(意思是成员资格、角色管理等)引用的数据库在App_Data目录中。请确保省略任何用户名和当您发布web.config.时,您的密码

在我的Web.config中,我没有任何角色管理器部分,也没有成员身份(我不使用成员身份,但我使用角色管理器?)

根据要求,这里有一些注册的重要代码:

当有人注册(AccountController)时,就会发生这种情况

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                user.Subscribed = false;
                user.StartSubscription = new DateTime?();
                user.EndSubscription = null;
                user.paypalProfileID = null;
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href="" + callbackUrl + "">here</a>");
                    return RedirectToAction("Index", "Home");
                }
                AddErrors(result);
            }
            // If we got this far, something failed, redisplay form
            return View(model);
        }

这是ApplicationUser标识:

public class ApplicationUser : IdentityUser
    {
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }
        public string paypalProfileID { get; set; }
        public bool? Subscribed { get; set; }
        public DateTime? StartSubscription { get; set; }
        public DateTime? EndSubscription { get; set; }
    }
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection", throwIfV1Schema: false)
        {
        }
        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }

amp#$&#@&#$U@#$$@#$#@#@$#@@$*(!$(@()@#($!@(@$(@$

一直都是NAV:

 @if (User.IsInRole("admin"))
                    {
                        <li>@Html.ActionLink("Admin", "AdminPage", "Admin")</li>
                    }

在没有的情况下部署似乎不起作用

<system.webServer>
    <modules>
        <remove name="RoleManager" />
    </modules>
</system.webServer>

在Web.Config 中

相关内容

  • 没有找到相关文章

最新更新