Удаление локальных баз данных и поставщика членства из элемента управления входом asp.net

Я использовал веб-сайт Visual Studio по умолчанию для создания приложения. он работает нормально на локальном компьютере, но когда я размещаю его на сервере iis.it выдает ошибку

Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.

в моей базе данных нет такого sp, а также я не хочу использовать поставщик членства, поэтому я попытался удалить локальные соединения из web.config, но все равно не повезло.

<remove name="LocalSqlServer" />
        <clear />
        <add name="LocalSqlServer" connectionString="Data Source=GGT\NNY;Initial Catalog=VersionControl;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>


        <add name="ConVersionControl" connectionString="Data Source=GGT\NNY;Initial Catalog=VersionControl;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>

ConVersionControl

это соединение, которое я использую в своем приложении

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

protected void LoginButton_Click(object sender, EventArgs e)
    {
        try
        {
            dtUserDetails = new DataTable();
            if (UserRepositoryBL.ValidateUser(LoginUser.UserName.Trim(), LoginUser.Password.Trim(), out dtUserDetails))
            {

                AuthUser au = new AuthUser();
                if (dtUserDetails.Rows.Count > 0)
                {
                    DataRow DR = dtUserDetails.Rows[0];
                    au.UserID = Convert.ToInt32(DR["UserID"].ToString());
                    au.UserNo = DR["UserNo"].ToString();
                    au.UserName = DR["UserName"].ToString();
                    au.Password = DR["Password"].ToString();
                }
                string userData = au.ToString();
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(

             1,                             // Version number

             LoginUser.UserName.Trim(),      // Username

             DateTime.Now,                  // Issue date

             DateTime.Now.AddMinutes(60), // Expiration date

             false,                         // Persistent?

             userData                 // User data

         );



                string eticket = FormsAuthentication.Encrypt(ticket);

                HttpCookie cookie = new HttpCookie

                     (FormsAuthentication.FormsCookieName, eticket);

                Response.Cookies.Add(cookie);


                BasePage.ActivityLog("User Login", LoginUser.UserName.Trim(), true, Request.RawUrl);
                string url = FormsAuthentication.GetRedirectUrl(LoginUser.UserName, false);

                Response.Redirect(url);



            }
            else
            {
                LoginUser.FailureText = "Your login attempt was not successful. Please try again.";
            }

        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

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


person chamara    schedule 08.08.2012    source источник


Ответы (1)


Если вы не хотите использовать поставщик членства ASP.NET, возможно, вы унаследовали поставщика от более высокого уровня web.config или machine.config на своем сервере IIS.

Попробуйте очистить провайдера в своей веб-конфигурации:

<system.web>
    <membership>
        <providers>
            <clear /> ...

    <roleManager>
        <providers>
            <clear /> ..

и т.д

Однако если вы все же хотите использовать членство, то если таблицы членства aspnet, процедуры и т. Д. Не существуют в вашей локальной базе данных, но ваша локальная среда работает, вполне вероятно, что в вашей локальной среде Dev DDL членства был создан в базе данных по умолчанию, т. е. aspnetdb

Настройки конфигурации должны быть в <membership> вашего web.config.

У вас есть 2 варианта:

  1. Переместите или создайте базу данных aspnetdb в производственной среде.
  2. Объедините aspnetdb таблицы, процедуры и т. Д. В вашу локальную базу данных, а затем повторно разверните ее в производственной среде.

Вы также можете обратиться сюда о том, как воссоздать объекты членства с нуля в своей базе данных: Не удалось найти хранимую процедуру 'dbo.aspnet_CheckSchemaVersion'

person StuartLC    schedule 08.08.2012
comment
Я попытался очистить поставщиков, теперь он дает ошибку "Поставщик членства по умолчанию должен быть указан" - person chamara; 08.08.2012
comment
@chamara - Похоже, у вас все еще есть непреднамеренная зависимость от членства где-то в вашем коде. Попробуйте выполнить это здесь msdn.microsoft.com/en-us/library/xdt4thhy .aspx - person StuartLC; 08.08.2012