这是一个涉及 Azure 与 SQL Server 和 Web 应用程序的问题。
在本地一切正常。该问题仅存在于 Azure 中。
我已经设置了一个带有数据库的 SQL Server,并发布了一个 Web 应用程序。他们使用的是同一个区域。
一切都有默认设置,除了允许我的本地 ip 连接到数据库服务器。
我可以从 SQL Server Management Studio 连接到 Azure SQL Server,并在那里看到我的数据库。
我在网络应用程序中做的第一件事是尝试注册一个新用户。涉及的技术是 ASP.NET MVC5、ASP.NET Identity 和带有迁移脚本的实体框架。普通的MS东西。
我已经ApplicationDbContext(DefaultConnection)
在 Publish/Settings/Databases 对话框中设置并选中了“Execute Code First Migrations”。
迁移脚本运行良好。所有表都已创建并显示在 SQL Server Management Studio 中。
但是,当 Web 应用程序尝试向User
表中添加新用户时,我收到如下所示的错误。
所以.. Web 应用程序显然具有对数据库的连接和访问权限,因为所有表都已创建。知道我缺少什么吗?
感谢您的帮助和意见!
更新:
在 web.config 我发现了一个新的 ConnectionString:
DefaultConnection_DatabasePublish
具有正确的配置。
不知何故,原版在发布DefaultConnection
后被更改为Data Source=localhost;Initial Catalog={catalog};Integrated Security=True
。
将 DefaultConnection 更改为与 DefaultConnection_DatabasePublish 相同解决了该问题。
我之前发布时没有这种行为。我之前没有检查过“执行代码优先迁移”。有人可以确认该行为是否与此有关吗?
“/”应用程序中的服务器错误。
该系统找不到指定的文件
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ComponentModel.Win32Exception:系统找不到指定的文件
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[Win32Exception (0x80004005): 系统找不到指定的文件]
[SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)]
System.Data.SqlClient.SqlInternalConnectionTds ..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString connectionOptions,SqlCredential 凭据,对象 providerInfo,String newPassword,SecureString newSecurePassword,布尔重定向用户实例,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,DbConnectionPool 池,字符串 accessToken,布尔 applyTransientFaultHandling)+821
系统.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.WaitForPendingOpen() +343
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(任务任务)+58
System.Data.Entity.SqlServer.<b__3>d__6.MoveNext() +226
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(任务任务)+58
System.Data.Entity.SqlServer.d__9`1.MoveNext() +354
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(任务任务)+58
System.Data.Entity.Core.EntityClient.d__8.MoveNext() +594