Код: Выделить всё
aspnetusers
У меня появилось новое требование использовать управляемое удостоверение Azure, поэтому я необходимо заменить System.Data.SqlClient на Microsoft.Data.SqlClient и изменить строку подключения. В другом моем проекте это работает нормально, но в этом случае Microsoft.Aspnet.identity.EntityFramework ссылается на System.Data.SqlClient, я пробовал много способов и не смог заставить его работать.
Следующий код — один из предлагаемых способов поиска в Интернете, но я все равно получаю сообщение об ошибке.
Код: Выделить всё
public class SetMicrosoftDataSqlClient : DbConfiguration
{
public SetMicrosoftDataSqlClient()
{
SetProviderServices("System.Data.SqlClient", SqlProviderServices.Instance);
}
}
[DbConfigurationType(typeof(SetMicrosoftDataSqlClient))]
public class ApplicationIdentityDbContext : IdentityDbContext
{
public ApplicationIdentityDbContext(string connectionString) : base(new Microsoft.Data.SqlClient.SqlConnection(connectionString), false) {
DbConfiguration.SetConfiguration(new SetMicrosoftDataSqlClient());
}
public static ApplicationIdentityDbContext Create()
{
var connectionString = ConfigurationManager.ConnectionStrings["IdentityDb"].ConnectionString;
return new ApplicationIdentityDbContext(connectionString);
}
}
Ошибка сервера в приложении '/'.
Невозможно привести объект типа "Microsoft.Data.SqlClient.SqlConnection" к типу "System.Data.SqlClient.SqlConnection".
Описание: во время выполнения текущего веб-запрос. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее источнике в коде.
Сведения об исключении: System.InvalidCastException: невозможно привести объект типа «Microsoft.Data.SqlClient. SqlConnection» для ввода «System.Data.SqlClient.SqlConnection».
Ошибка источника:
Line 2217:
Строка 2218: // Есть ли это письмо в нашей системе?
Строка 2219: user = await this.FindByEmailAsync(email);
Строка 2220:
Строка 2221: if (user == null)
Исходный файл: F:\Repos\SBMP\WebApp\SBMP\Infrastructure\ApplicationUserManager.cs Строка: 2219
Трассировка стека:
[InvalidCastException: невозможно выполнить приведение объект типа «Microsoft.Data.SqlClient.SqlConnection» для типа «System.Data.SqlClient.SqlConnection».]
System.Data.SqlClient.SqlCommand.set_DbConnection(значение DbConnection) +26
System.Data.Common.DbCommand.set_Connection(значение DbConnection) +9
System. Data.Entity.Internal.InterceptableDbCommand.set_DbConnection(значение DbConnection) +9
System.Data.Common.DbCommand.set_Connection(значение DbConnection) +9
System.Data.Entity.Core.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommandentityCommand, EntityTransactionentityTransaction, DbCommand storeProviderCommand) +62
System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.PrepareEntityCommandBeforeExecution(EntityCommandentityCommand) +155
System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommandentityCommand, КомандаПоведение поведение) +25
System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute(контекст ObjectContext, значения параметра ObjectParameterCollection) +735
System.Data.Entity. Core.Objects.c__DisplayClass41_0.b__1() +85
System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func
Код: Выделить всё
1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) +292 System.Data.Entity.Core.Objects.c__DisplayClass41_0.b__0() +132 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func
System.Data.Entity.Core.Objects.ObjectQuery
Код: Выделить всё
1.GetResults(Nullable
System.Data.Entity.Core.Objects.ObjectQuery
Код: Выделить всё
1.b__31_0() +11 System.Data.Entity.Internal.LazyEnumerator
System.Linq.Enumerable.Single(IEnumerable
Код: Выделить всё
1 source) +113 System.Data.Entity.Core.Objects.ELinq.c__14
Код: Выделить всё
1 sequence) +7 System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable
System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(выражение выражения) +59
System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(Выражение-выражение) +70
System.Linq.Queryable.Count(IQueryable
Код: Выделить всё
1 source, Expression
System.Data.Entity.Migrations.History.HistoryRepository.QueryExists(String contextKey) +597
System.Data.Entity. Migrations.History.HistoryRepository.Exists(String contextKey) +39
System.Data.Entity.Migrations.History.HistoryRepository.GetLastModel(String&migrationId, String& productVersion, String contextKey) +58
System.Data.Entity.Internal.InternalContext.QueryForModel(DatabaseExistenceState ExistenceState) +39
System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext InternalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata, DatabaseExistenceState ExistenceState) +52
System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) , DatabaseExistenceState ExistenceState) +54
System.Data.Entity.CreateDatabaseIfNotExists
Код: Выделить всё
1.InitializeDatabase(TContext context) +109 System.Data.Entity.Internal.c__DisplayClass66_0
System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Действие-действие) +60
System.Data.Entity. Internal.InternalContext.PerformDatabaseInitialization() +372
System.Data.Entity.Internal.c.b__58_0(InternalContext в) +9
System.Data.Entity.Internal.RetryAction
Код: Выделить всё
1.PerformAction(TInput input) +129 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +86
System.Data.Entity.Internal.InternalContext.Initialize() +30
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Тип типа сущности) +16
System.Data.Entity.Internal.Linq.InternalSet
Код: Выделить всё
1.Initialize() +53 System.Data.Entity.Internal.Linq.InternalSet
System.Data.Entity.Infrastructure.DbQuery
Код: Выделить всё
1.System.Linq.IQueryable.get_Provider() +38 System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
Код: Выделить всё
1 predicate, CancellationToken cancellationToken) +138 System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
Код: Выделить всё
1 predicate) +145 Microsoft.AspNet.Identity.EntityFramework.d__67.MoveNext() +402 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +102 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +64 System.Runtime.CompilerServices.TaskAwaiter
SBMP.Infrastructure.d__22.MoveNext() в F:\Repos\SBMP\WebApp\SBMP\Infrastructure\ApplicationUserManager.cs:2219
System.Runtime .CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task Task) +102
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача) +64
System.Runtime.CompilerServices.TaskAwaiter
Код: Выделить всё
1.GetResult() +29 SBMP.Controllers.d__2.MoveNext() in F:\Repos\SBMP\WebApp\SBMP\Controllers\LoginController.cs:64 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +102 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +64 System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97 System.Web.Mvc.Async.c__DisplayClass8_0.b__1(IAsyncResult asyncResult) +17 System.Web.Mvc.Async.WrappedAsyncResult
System.Web.Mvc.Async.WrappedAsyncResultBase
Код: Выделить всё
1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 System.Web.Mvc.Async.c__DisplayClass11_0.b__0() +58 System.Web.Mvc.Async.c__DisplayClass11_2.b__2() +228 System.Web.Mvc.Async.c__DisplayClass7_0.b__1(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult
System.Web.Mvc.Async.WrappedAsyncResultBase
Код: Выделить всё
1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 System.Web.Mvc.Async.c__DisplayClass3_5.b__4() +32 System.Web.Mvc.Async.c__DisplayClass3_0.b__1(IAsyncResult asyncResult) +91 System.Web.Mvc.Async.WrappedAsyncResult
System.Web.Mvc.Async.WrappedAsyncResultBase
Код: Выделить всё
1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.c.b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +11 System.Web.Mvc.Async.WrappedAsyncVoid
System.Web.Mvc.Async.WrappedAsyncResultBase
Код: Выделить всё
1.End() +49 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +45 System.Web.Mvc.c.b__151_2(IAsyncResult asyncResult, Controller controller) +13 System.Web.Mvc.Async.WrappedAsyncVoid
System.Web.Mvc.Async.WrappedAsyncResultBase
Код: Выделить всё
1.End() +49 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.c.b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +28 System.Web.Mvc.Async.WrappedAsyncVoid
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) ) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(результат IAsyncResult) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +577
System.Web.HttpApplication.ExecuteStepImpl(шаг IExecutionStep) +132
System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логическое значение и завершеносинхронно) +163
Подробнее здесь: https://stackoverflow.com/questions/792 ... ityframewo