Изучаю ASP.Net Core MVC по книге Адама Фримена.
Пробую запускать этот пример, но получаю ошибку следующего содержания:
Cannot open database "SportsStore" requested by the login. The login failed. Login failed for user 'DESKTOP-TS09MR6\AdminX'.
ConnectionString выглядит так Server=(localdb)\\MSSQLLocalDB;Database=SportsStore;Trusted_Connection=True;MultipleActiveResultSets=true
В чем может быть проблема?
StackTrace:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.SqlClient.SqlException: Cannot open database "SportsStore" requested by the login. The login failed.
Login failed for user 'DESKTOP-TS09MR6\AdminX'.
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open()
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext()
at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.GetResult[TResult](IEnumerable`1 valueBuffers)
at lambda_method(Closure , QueryContext )
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass20_0`1.b__0(QueryContext qc)
at System.Linq.Queryable.Any[TSource](IQueryable`1 source)
at SportsStore.Models.SeedData.EnsurePopulated(IApplicationBuilder app) in F:\Рабочий стол\pro-asp.net-core-mvc-master\Source Code 1-31\08 - SportsStore\SportsStore\src\SportsStore\Models\SeedData.cs:line 12
at SportsStore.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in F:\Рабочий стол\pro-asp.net-core-mvc-master\Source Code 1-31\08 - SportsStore\SportsStore\src\SportsStore\Startup.cs:line 43
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
Проблема явно описана в сообщении об ошибке: SQL Server не смог подключить пользователя DESKTOP-TS09MR6\AdminX к базе SportsStore потому что такой базы на сервере нет. Или она есть, но у пользователя DESKTOP-TS09MR6\AdminX нет прав на доступ к ней (маловероятно для локального админа и localdb).
Подключитесь к серверу через Visual Studio или SSMS и создайте базу с таким именем.
Проблема разрешилась.
Перенес код инициализации БД в метод Main
, как указано здесь.
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = host.Services.GetRequiredService<ApplicationDbContext>();
SeedData.EnsurePopulated(context);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
host.Run();
}
После этого команды Add-Migration Initial
и Update-Database
в консоли менеджера пакетов отработали нормально. БД создалась и ошибка пропала.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
У меня есть кнопки, которым я по щелчку меняю фон, у каждой кнопки свой фон, есть кнопки с одинаковыми фонамиЯ загрузила в ресурсы все изображения,...
Как сделать поиск по listbox, по слову или части слова? Например: в textbox1 пишем слово "man" и нажимаем на кнопку "Search" и нужно, чтоб нашло слово или...
Есть 2 объекта левый без Rigidbody а правый с Rigidbody(is Kinematic= false) через левый можно проходить насквозь а правый можно отодвигатьКак сделать так чтобы...
Как-то вот не разобрался, можно ли добавить в проект, допустим - консольного приложения, базу данных и задеплоить это всё хозяйство одним dll? Если...