SqlMembershipProvider在开发机器和服务器上给出不同的结果(?)

时间:2009-09-18 22:20:27

标签: asp.net iis forms-authentication

我正在尝试部署asp.net应用程序。我真的好意思。

无论如何,使用SqlMembershipProvider使用表单身份验证来保护部分内容。我已将成员资格提供程序配置为通过Web.Config使用SQL服务器实例。

我可以通过Visual Studio使用“ASP.NET配置”工具来创建新用户。这似乎工作正常,并在数据库表中为每个用户创建一个新行。

然后,我可以使用新创建的凭据登录受保护区域。

这一切都在Visual Studio开发调试服务器上运行良好。

当我将其部署到服务器时出现问题。将项目的整个目录树(包括Web.Config)复制到服务器并尝试登录后,使用完全相同的凭据,它告诉我“您的登录尝试未成功。请尝试试“。

这怎么可能?

呃,我讨厌部署。

更新

我将以下代码添加到登录页面。当我单击服务器托管的页面时,可以在服务器上使用凭据登录。

protected void CreateAdminButton_Click(object sender, EventArgs e)
{
    System.Web.Security.Membership.DeleteUser("admin");
    System.Web.Security.Membership.CreateUser("admin", "asdfasdf", "admin@email.com");
}

新管理员记录在同一个数据库中可见。然后,管理员凭据无法用于从开发计算机登录。这表明某种键控哈希算法在服务器和开发箱上使用了不同的键。

1 个答案:

答案 0 :(得分:2)

确保在成员资格提供程序中使用“/”作为应用程序名称参数,并定义自定义角色提供程序。我几天前就碰到了这个。

您现在必须手动清理数据库,因为您可能在应用程序表中有2行,并且在用户和角色表中有重复。

请参阅http://cdonner.com/forms-authentication-custom-membership-provider-gotchas.htm