直到上周,我使用 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/