Entity framework 6 创建表后,Web应用首次尝试插入SQL Server数据库时Azure中出现错误
这是一个涉及Azure、SQL Server和Web应用程序的问题 当地一切正常。这个问题只存在于Azure中 我已经建立了一个带有数据库的SQL Server,并发布了一个web应用程序。他们使用的是同一地区 除了允许我的本地ip连接到数据库服务器之外,所有内容都有默认设置 我可以从SQLServerManagementStudio连接到Azure SQLServer,并在那里看到我的数据库 我在web应用程序中做的第一件事是尝试注册一个新用户。涉及的技术包括ASP.NET MVC5、ASP.NET标识和带有迁移脚本的实体框架。正常MS的东西 我已经在发布/设置/数据库对话框中设置了Entity framework 6 创建表后,Web应用首次尝试插入SQL Server数据库时Azure中出现错误,entity-framework-6,azure-web-app-service,asp.net-identity-2,azure-sql-database,azure-sql-server,Entity Framework 6,Azure Web App Service,Asp.net Identity 2,Azure Sql Database,Azure Sql Server,这是一个涉及Azure、SQL Server和Web应用程序的问题 当地一切正常。这个问题只存在于Azure中 我已经建立了一个带有数据库的SQL Server,并发布了一个web应用程序。他们使用的是同一地区 除了允许我的本地ip连接到数据库服务器之外,所有内容都有默认设置 我可以从SQLServerManagementStudio连接到Azure SQLServer,并在那里看到我的数据库 我在web应用程序中做的第一件事是尝试注册一个新用户。涉及的技术包括ASP.NET MVC5、ASP.
ApplicationDbContext(DefaultConnection)
,并选中了“执行代码优先迁移”
迁移脚本运行正常。所有表都已创建并显示在SQLServerManagementStudio中
但是,当web应用程序试图向user
表中添加新用户时,我得到如下所示的错误
所以。。由于所有表都已创建,web应用程序显然具有数据库的连接和访问权限。知道我错过了什么吗
谢谢你的帮助和意见
更新:
在web.config中,我发现了一个新的ConnectionString:
DefaultConnection\u数据库发布
,配置正确
原来的DefaultConnection
被更改为datasource=localhost;初始目录={Catalog};发布后,集成安全性=True
将DefaultConnection更改为与DefaultConnection\u DatabasePublish相同解决了该问题
我以前出版时从未有过这种行为。我以前没有选中“先执行代码迁移”。有人能证实这一行为是否与此有关吗
“/”应用程序中出现服务器错误
系统找不到指定的文件
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源
异常详细信息:System.ComponentModel.Win32异常:系统找不到指定的文件
源错误:
在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别
堆栈跟踪:
[Win32Exception(0x80004005):系统找不到指定的文件]
[SqlException(0x80131904):建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到或无法访问该服务器。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接)]
System.Data.SqlClient.SqlInternalConnectionDS..ctor(DbConnectionPoolIdentity标识、SqlConnectionString connectionOptions、SqlCredential凭据、对象providerInfo、String newPassword、SecureString NewSecureRepasword、Boolean RediredUserInstruction、SqlConnectionString userConnectionOptions、SessionData ReconSectionSessionData、DbConnectionPool池、String accessToken、Boolean applyTransientFaultHandling)+821System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项、DbConnectionPoolKey poolKey、Object poolGroupProviderInfo、DbConnectionPool池、DbConnectionOwningConnection、DbConnectionOptions用户选项)+332
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池、DbConnectionOwningObject、DbConnectionOptions选项、DbConnectionPoolKey池键、DbConnectionOptions用户选项)+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-OnlyOnEckConnection,DbConnectionOptions-userOptions,DbConnectionInternal&connection)+426
System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen()+343
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)+58
System.Data.Entity.SqlServer.d_u6.MoveNext()+226
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)+58
System.Data.Entity.SqlServer.d_u9`1.MoveNext()+354
System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)+58
System.Data.Entity.Core.EntityClient.d_u8.MoveNext()+594
根据您的描述和错误消息,我猜您没有在web.config中设置正确的连接字符串 因此,web应用程序无法访问正确的sql数据库 我建议您可以尝试使用kudu控制台检查web应用程序是否设置了正确的连接字符串 1.打开kudu控制台 2.使用调试控制台 3.找到site\wwwroot文件夹并查找web.config文件 单击“修改”按钮 那你就可以
Server=tcp:{sqlservername}.database.windows.net,1433;Initial Catalog={databasename};Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;