第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 中