SqlMembershipProvider дает разные результаты на компьютере разработчика и на сервере (?) - PullRequest
1 голос
/ 19 сентября 2009

Я пытаюсь развернуть приложение asp.net. Я действительно сосу это.

В любом случае, его части защищены с помощью проверки подлинности с помощью форм SqlMembershipProvider. Я настроил поставщика членства для использования экземпляра сервера SQL через Web.Config.

Я могу использовать инструмент «Конфигурация ASP.NET» через Visual Studio для создания новых пользователей. Это, кажется, работает нормально и создает новую строку в таблице базы данных для каждого пользователя.

Затем я могу войти в защищенные зоны, используя вновь созданные учетные данные.

Все это прекрасно работает на сервере отладки разработки 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 Ответ

2 голосов
/ 19 сентября 2009

Убедитесь, что вы используете «/» для параметра имени приложения в вашем поставщике членства, а также определяете пользовательский поставщик ролей. Я только что столкнулся с этим несколько дней назад.

Теперь вам нужно будет очистить базу данных вручную, потому что у вас, вероятно, есть 2 строки в таблице приложений и дублирование в таблицах пользователей и ролей.

См. http://cdonner.com/forms-authentication-custom-membership-provider-gotchas.htm.

...