Webmatrix.WebData метод входа приводит к исключению
Привет, я пытался интегрировать SimpleMembershipProvider в мое приложение asp.net mvc, но у меня, похоже, есть некоторые проблемы с ним.
Вот что у меня есть в моем web.config:
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider"/>
</providers>
</membership>
Это код, который я пытаюсь запустить, чтобы войти в систему пользователя:
public bool Login(string userName, string password, bool rememberMe)
{
return WebSecurity.Login(userName, password, rememberMe);
}
До того, как все это вызывается, вызывается следующий код атрибута get, и он отлично работает:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MembershipInitializerAttribute : ActionFilterAttribute
{
private const string CONNECTIONSTRING_NAME = "eShopConnectionString";
private const string DATABASE_TABLE_NAME = "Users";
private const string DATABASE_TABLE_IDENTIFIER_COLUMN = "UserId";
private const string DATABASE_TABLE_USER_NAME_COLUMN = "UserName";
private const bool AUTO_CREATE_TABLES = true;
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection(CONNECTIONSTRING_NAME, DATABASE_TABLE_NAME, DATABASE_TABLE_IDENTIFIER_COLUMN, DATABASE_TABLE_USER_NAME_COLUMN, AUTO_CREATE_TABLES);
}
}
}
Метод входа в систему get выполняется после того, как я ввел свое имя пользователя и пароль. После того, как я нажму кнопку входа в систему, выполняется действие Login Login, которое вызывает метод Login, ведьма выдает следующее исключение:
{"Не удалось загрузить тип 'WebMatrix.WebData.SimpleMembershipProvider'. (F:\Programare\Projects IDE\Visual Studio\2012\e-shop\Backend\WebApi\e-shop.WebApi\web.config line 73)"}
После того, как я провел небольшое исследование, многие предложили установить для свойства WebMatrix.WebData Copy Local значение true.
После того, как я это сделал, кажется, что при запуске приложения что-то не так, потому что я больше не вижу экрана, где я могу вставить свои учетные данные, я сразу получаю экран с этим сообщением:
Описание: во время обработки файла конфигурации, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите подробности конкретной ошибки ниже и измените файл конфигурации соответствующим образом.
Сообщение об ошибке синтаксического анализатора: этот метод не может быть вызван во время предварительной инициализации приложения.
Что я делаю не так и как я могу это исправить?
РЕДАКТИРОВАТЬ
Я также получаю эту StackTrace:
1 ответ
Ваша запись web.config не выглядит правильно. Атрибут type в элементе add должен содержать имя сборки после запятой. Вот как должна выглядеть запись web.config.
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
Обратите внимание, что в дополнение к имени сборки лучше всего использовать элемент clear, чтобы убедиться, что вы не регистрируете несколько провайдеров, что может вызвать странное поведение.