asp.net-mvc - 升级到 SQL Server 2008 R2 后,Azure 计算模拟器无法连接到数据库

标签 asp.net-mvc sql-server-2008 azure azure-web-roles

直到上周,我使用 SQL Server 2008 非 R2 进行开发,并且我的 ASP.NET MVC Web 应用程序在 Azure 计算模拟器中运行良好。它在运行时建立数据库连接。

切换到 SQL Server 2008 R2(之前卸载了非 R2 版本)后,我的 Web 应用程序在计算模拟器中运行时无法再连接到数据库。

有趣:当我在 Azure 计算模拟器之外启动应用程序时,它可以正常工作!

异常(exception):

System.Data.SqlClient.SqlException was unhandled by user code Message=Cannot open database "X" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.

有什么想法吗?谢谢!

最佳答案

我猜您的连接字符串是“Integrated Security=True”(或 SSPI)。您的旧服务器已配置为允许用户“Netword Service”访问目标数据库,而新安装的 R2 则不然。

此外,当您在计算模拟器下运行应用程序时,它会使用 IIS 来运行您的 Web 角色,即默认的应用程序池标识(网络服务)。但是,当您在没有云项目(计算模拟器)的情况下运行应用程序时,它会使用 Casini(又名 Web 开发服务器),该服务器在 Visual Studio 使用的帐户下运行(猜测您的用户帐户的升级版本)。由于您的用户帐户确实有权访问数据库,因此您的应用程序也有权访问该数据库。

我强烈建议在开发面向云部署的 Windows Azure 应用程序时,放弃任何“集成安全”连接字符串,并针对 SQL Server 用户使用。 SQL Azure 仅支持 SQL Server 身份验证/授权。

关于asp.net-mvc - 升级到 SQL Server 2008 R2 后,Azure 计算模拟器无法连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119094/

相关文章:

asp.net-mvc - ASP .NET 匿名用户未存储在数据库中

Azure Active Directory - 获取租户列表

jquery - 文件输入 - 防止选择某些类型的文件和大小

c# - 在从 JSON 反序列化期间对所有属性调用 Web API 访问器

c# - 如何使用 View 模型

android - NPM 缓存步骤在 Azure DevOps 中不起作用

security - Azure API 管理是否包含 WAF 功能?

sql - 仅当 SQL Server 中存在时才选择负值

performance - 使用 IN 运算符的 SQL 查询停止寻找索引并开始扫描它,速度慢了 100 倍

sql-server - 克隆带有所有新主键的 SQL Server 数据库