1

Я создал небольшое веб-приложение с помощью Visual Web Developer 2010 Express. После того, как я развернул свой сайт и перешел на первую страницу, которая является страницей входа в систему, которая предоставляет список пользователей для приложения, я получаю эту ошибку:Memberhip.GetAllUsers() System.Data.SqlClient.SqlException: у пользователя нет разрешения на выполнение этого действия

Сведения об исключении: System.Data.SqlClient.SqlException: Пользователь не имеют разрешение на выполнение этого действия.

Источник ошибки:

Line 22:   public ActionResult LogOn() 
Line 23:   { 
Line 24:    var users = Membership.GetAllUsers().Cast<MembershipUser>().ToList(); 
Line 25:    SelectList usernames = new SelectList(users); 
Line 26:    ViewBag.UserNames = usernames; 

Вот мои настройки: ConnectionStrings

<connectionStrings> 
    <add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Почему происходит эта ошибка? Буду признателен за любую оказанную помощь. В настоящее время я разрабатываю его на сервере Windows 2008 Server и тестирую его на одном компьютере.

+0

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

+0

@JeremyHolovacs Я разрабатываю и тестирую развертывание на одной машине. Он работает, когда я отлаживаю его в Visual Web Developer. Что мне нужно сделать с SQL Server Express, чтобы получить разрешение на работу? – massaskillz

+0

Используете ли вы SSPI (надежные подключения)? Я бы сделал учетную запись пользователя Sql в базе данных ваших приложений с доступом для чтения/записи и использовал эти учетные данные в вашей строке подключения. –

ответ

1

Я нашел проблему с моей строкой соединения. Она была создана для пользователя инстансов, которые в соответствии с этим Microsoft article:

Web applications running on IIS 7.5 and that rely on SQL Server Express user instancing will fail to run using the default IIS 7.5 security configuration on both Windows 7 Client and Windows Server 2008 R2

В статье также рекомендует избегать использования пользовательских экземпляров в производстве. Я нашел это post, который помог мне разместить базу данных в обычном экземпляре. \ SQLExpress. Я изменил мои строки подключения к:

<connectionStrings> 
    <add name="ApplicationServices" 
    connectionString="Database="app_users";Data Source=.\SQLEXPRESS;Initial Catalog=app_users;Integrated Security=SSPI;" 
    providerName="System.Data.SqlClient"/> 
</connectionStrings> 

Перед изменением выше строки соединения, я прикрепил файл ASPNETDB.mdf в SQL Server Express в новую базу данных я создал под названием «app_users».

Я больше не получаю ошибку разрешений.

+0

У меня такая же проблема. Затем я просто удаляю 'User Instance = true' в строке подключения. Whoo, работайте как шарм. Спасибо за ваш намек. +1 – Han