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, чтобы убедиться, что вы не регистрируете несколько провайдеров, что может вызвать странное поведение.

Другие вопросы по тегам