代码之家  ›  专栏  ›  技术社区  ›  pandorachaos

类型为“System.Data.SqlClient”的异常。mscorlib中出现“SqlException”。dll,但未在用户代码中处理

  •  0
  • pandorachaos  · 技术社区  · 8 年前

    https://docs.microsoft.com/en-us/aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/membership-and-administration

    我正在这台Windows 7(64位)计算机上使用Visual Studio 2013和SQL Server 2012 Express LocalDB。然而,当我在学校时,我在Windows 10(64位)机器上使用Visual Studio 2015(具有相同的SQL Server版本)。

    现在,我正在VS2013上编写上述教程,在构建和运行该程序后,它开始工作了。在将其移植到VS2015并运行该程序后,我无法在VS2013上再次运行它。相反,我遇到了一个错误。

    An exception of type 'System.Data.SqlClient.SqlException' occurred in 
    mscorlib.dll but was not handled in user code
    
    Additional information: A network-related or instance-specific error 
    occurred while establishing a connection to SQL Server. The server was not 
    found or was not accessible. Verify that the instance name is correct and 
    that SQL Server is configured to allow remote connections. (provider: SQL 
    Network Interfaces, error: 50 - Local Database Runtime error occurred. The 
    specified LocalDB instance does not exist.)
    

    这是源错误代码块(具体发生在第24行):

    Line 22:             var roleMgr = new RoleManager<IdentityRole>(roleStore);
    Line 23: 
    Line 24:             if (!roleMgr.RoleExists("canEdit"))
    Line 25:                 IdRoleResult = roleMgr.Create(new IdentityRole { Name = "canEdit" });
    Line 26: 
    

    [SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. The specified LocalDB instance does not exist.
    )]
       System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) +821
       System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +332
       System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +38
       System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +699
       System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +89
       System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +426
       System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +78
       System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +191
       System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
       System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
       System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +90
       System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +217
       System.Data.SqlClient.SqlConnection.Open() +96
       System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(DbConnection t, DbConnectionInterceptionContext c) +36
       System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +138
       System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext) +477
       System.Data.Entity.SqlServer.<>c__DisplayClass33.<UsingConnection>b__32() +520
       System.Data.Entity.SqlServer.<>c__DisplayClass1.<Execute>b__0() +34
       System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func`1 operation) +251
       System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) +196
       System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action`1 act) +276
       System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action`1 act) +545
       System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable`1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +151
       System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +287
       System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +111
       System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase() +236
       System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection) +143
       System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +207
       System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +42
       System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +136
       System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update() +33
       System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext) +175
       System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext, DatabaseExistenceState existenceState) +150
       System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +444
       System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +290
       System.Data.Entity.Internal.<>c__DisplayClassf`1.<CreateInitializationAction>b__e() +165
       System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +110
       System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +660
       System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) +31
       System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +143
       System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +292
       System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +123
       System.Data.Entity.Internal.InternalContext.Initialize() +42
       System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39
       System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +137
       System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +38
       System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +99
       System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable`1 source, Expression`1 predicate, CancellationToken cancellationToken) +197
       System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable`1 source, Expression`1 predicate) +233
       Microsoft.AspNet.Identity.EntityFramework.RoleStore`3.FindByNameAsync(String roleName) +1120
       Microsoft.AspNet.Identity.<FindByNameAsync>d__13.MoveNext() +278
       System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
       System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
       System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +28
       Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +123
       Microsoft.AspNet.Identity.<RoleExistsAsync>d__d.MoveNext() +612
       System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
       System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
       System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +28
       Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func`1 func) +244
       Microsoft.AspNet.Identity.RoleManagerExtensions.RoleExists(RoleManager`2 manager, String roleName) +241
       Starlane.Logic.RoleActions.AddUserAndRole() in F:\WEBENGINEERING\Starlane\Starlane\Logic\RoleActions.cs:24
       Starlane.Global.Application_Start(Object sender, EventArgs e) in F:\WEBENGINEERING\Starlane\Starlane\Global.asax.cs:28
    
    [HttpException (0x80004005): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. The specified LocalDB instance does not exist.
    )]
       System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +10063289
       System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
       System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +173
       System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
       System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296
    
    [HttpException (0x80004005): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. The specified LocalDB instance does not exist.
    )]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10044576
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
    

    每当我注释掉任何使用roleMgr var的代码行时,应用程序都会运行,但当我尝试测试登录系统时,会遇到相同的SqlException错误。我想这可以通过我的网络纠正。配置文件。以下是我看到的(经过一些谷歌研究)代码中我认为与之相关的部分:

    <connectionStrings>
        <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-Starlane-20170802095040.mdf;Initial Catalog=aspnet-Starlane-20170802095040;Integrated Security=True" providerName="System.Data.SqlClient"/>
        <add name="Starlane" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\starlane.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
      </connectionStrings>
    

    使用服务器资源管理器,我可以查询Starlane数据库,但不能查询默认的连接数据库。

    无论如何,我希望我提供了足够的信息,以便有人能够帮助我解决这个问题。从2015年到2013年运行时,代码或任何配置是否有任何变化会导致此问题?

    提前非常感谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   jerry    8 年前

    您需要检查实例是否存在。 尝试运行sqllocaldb。通过命令提示符执行。

    使用“sqllocaldb start instance name”启动它。