Присоединенная БД Может войти в систему, но не может создать пользователя "Недопустимое значение для ключа 'attachdbfilename'" - PullRequest
1 голос
/ 11 мая 2011

У меня есть приложение, работающее на нашем сервере (оно отлично работает на моем компьютере, хотя это не имеет значения). Это сервер Windows 2003, сервер Sql Express 2008 r2.

Я использую подключенную БД для хранения пользователей (база данных предоставлена ​​asp.net).

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

здесь у вас есть строка подключения в web.config

<add name="ConnectionStringASPNETDB.MDF" connectionString="Data Source=localhost\SQLEXPRESS_2008;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

и поставщик членства

<add name="daganteckning" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="ConnectionStringASPNETDB.MDF"
                enablePasswordRetrieval="false"
                enablePasswordReset="false"
                requiresQuestionAndAnswer="false"
                applicationName="/"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                description="Stores and retrieves membership data from a Microsoft SQL Server database." />

Мое единственное предположение, что я должен установить какое-то разрешение безопасности для каталога / файла, но я не знаю, какой пользователь iis / sql использует для доступа к файлу базы данных.

У кого-нибудь есть идеи?

Edit: Я попытался заменить localhost \ sqlexpress_2008 на. \ Sqlexpress_2008, и теперь я получил

Невозможно открыть физический файл "C: \ Inetpub \ Wwwroot \ MEDLEM_TEST \ App_Data \ ASPNETDB.mdf". Ошибка операционной системы 32: «32 ( процесс не может получить доступ к файлу, потому что он используется другим процесс.) ". Попытка прикрепить база данных с автоматическим именем для файла C: \ Inetpub \ Wwwroot \ MEDLEM_TEST \ App_Data \ ASPNETDB.mdf не удалось. База данных с тем же именем существует или указанный файл не может быть открыт или находится на общем ресурсе UNC.

Ответы [ 2 ]

1 голос
/ 12 мая 2011

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

Вы также можете попробовать перезапустить приложение после внесения изменений, которые вы перечислили.

Также, если вы используете AspИнструмент настройки .Net он прикрепит к файлу mdf, и ваше приложение создаст эту ошибку, пока вы подключены через нее.

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

После просмотра я обнаружил, что не использовал определенного провайдера, если не заявил, что хочу использовать его по имени ... поэтому я решил это, добавив <clear /> к тегу провайдеров и добавив атрибут defaultProvider = "daganteckning"к тегу членства.

<membership defaultProvider="daganteckning">
    <providers>
        <clear />
        <add name="daganteckning" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="ConnectionStringASPNETDB.MDF"
                enablePasswordRetrieval="false"
                enablePasswordReset="false"
                requiresQuestionAndAnswer="false"
                applicationName="/"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                description="Stores and retrieves membership data from a Microsoft SQL Server database." />
    </providers>
    ....
...