Не удается открыть базу данных "aspnetdb", запрошенную при входе в систему.Ошибка входа - PullRequest
4 голосов
/ 27 мая 2011

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

Cannot open database "aspnetdb" requested by the login. The login failed.

Ошибка входа для пользователя 'DIMA-00AA1DA557 \ Dima'.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: Не удается открыть базу данных «aspnetdb», запрошенную при входе в систему Ошибка входа Ошибка входа для пользователя 'DIMA-00AA1DA557 \ Dima'.

Почему он это делает /...

Я думаю, что все в порядке с моей строкой соединения и провайдером членства:

<connectionStrings>
  <clear />
  <add name="LocalSqlServer" providerName="System.Data.SqlClient" connectionString="Data Source=localhost;Integrated Security=SSPI; Initial Catalog=aspnetdb" /> 
  <add name="YourGuruDB" connectionString="Data Source=DIMA-00AA1DA557;Initial Catalog=model;Integrated Security=True"/>
  <add name="modelConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename='D:\Documents and Settings\Dima\My Documents\Visual Studio 2010\WebSites\WebSite10\App_Data\ASPNETDB.MDF';Integrated Security=True;User Instance=True;Trusted_Connection=Yes;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
  <authentication mode="Forms">
    <forms name=".MyCookie"
           loginUrl="~/Registration.aspx"
           protection="All"
           timeout="30" path="/" >
      <credentials passwordFormat="MD5">
        <user name="user" password="ca064d0730abfeb09e383a0e82e65f73"/>
      </credentials>
    </forms>
  </authentication>

  <roleManager enabled="true"/>

  <membership defaultProvider="MyMembershipProvider">
    <providers>
      <clear/>
      <add name="MyMembershipProvider"
           type="System.Web.Security.SqlMembershipProvider"
           connectionStringName="modelConnectionString"
           minRequiredPasswordLength="1"
           minRequiredNonalphanumericCharacters="0"
           enablePasswordReset="true"
           maxInvalidPasswordAttempts="1000"
           passwordAttemptWindow="4000"
           enablePasswordRetrieval="true"
           requiresUniqueEmail="false"
           passwordFormat="Encrypted"
           applicationName="/WebSite10" />
    </providers>
  </membership>

Ответы [ 3 ]

3 голосов
/ 27 мая 2011

Как указывает "Rune FS" в комментариях, вы настроили строки подключения к базе данных для использования встроенной аутентификации, что хорошо, поскольку вы не храните явные имена пользователей и пароли в своих файлах конфигурации.

Однако вам необходимо знать, откуда он получает «интегрированные» учетные данные - в этом случае учетные данные пользователя, под которым работает IIS (или VS Dev Server), используются для подключения к базе данных.- если он использует ваше имя для входа в Windows, я предполагаю, что вы используете либо IIS Express, либо сервер разработки VS?

Я полагаю, что проблема у вас заключается в том, что при включении диспетчера ролей выне настроили его, и вы оставили включенной строку подключения по умолчанию LocalSqlServer, также указывающую на базу данных с именем aspnetdb - по умолчанию будет пытаться использовать поставщик диспетчера ролей по умолчанию, который использует подключение LocalSqlServer.

Измените элемент <rolemanager /> следующим образом:

<rolemanager enabled="true" defaultProvider="MyRoleProvider" >
  <providers>
    <clear />
    <add name="MyRoleProvider" 
         applicationName="/" 
         connectionStringName="modelConnectionString"
         type="System.Web.Security.SqlRoleProvider" />
  </providers>
</rolemanager>

Я бы также рекомендовалудаление строки соединения LocalSqlServer, если вы ее не используете, чтобы избежать путаницы.

1 голос
/ 02 февраля 2015

Этот пользователь Windows не имеет права подключаться к этой базе данных и использовать ее.

Проверьте, чтобы убедиться:

что у вас есть правильное имя сервера в строке подключения. Это действительно localhost? Или, возможно, вы установили SQL Server Express, и вместо этого он стал (локальным) \ SQLExpress ??

что сервер, к которому вы подключаетесь, имеет логин для Philip-Desktop \ Philip (проверьте в Object Explorer -> (ваш сервер) -> Security -> Logins)

что база данных ASPNETDB имеет пользователя на основе этого имени входа, чтобы вы могли использовать эту базу данных (проверьте в обозревателе объектов -> (ваш сервер) -> Базы данных -> (ваша база данных) -> Безопасность -> Пользователи)

что ваша страница admin.aspx действительно ссылается на указанную вами строку подключения (WIJLConnectionString1). Есть ли в вашей папке администратора отдельный файл web.config, например, имеет другую строку подключения, а страница admin.aspx ссылается на эту строку подключения вместо этого *

0 голосов
/ 27 мая 2011

Сначала убедитесь, что на SQL Server включена аутентификация в смешанном режиме.Затем создайте имя входа SQL и назначьте его пользователем базы данных.Сделав это, вы можете поместить эти учетные данные в строку подключения и убрать опцию надежной безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...