1

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

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

有趣:当我在 Azure Compute Emulator 之外启动我的应用程序时,它可以工作!

例外:

System.Data.SqlClient.SqlException 未被用户代码处理 Message=无法打开登录请求的数据库“X”。登录失败。用户“NT AUTHORITY\NETWORK SERVICE”登录失败。

有任何想法吗?谢谢!

4

2 回答 2

4

我猜您的连接字符串带有“Integrated Security=True”(或 SSPI)。您的旧服务器已配置为用户“网络服务”对目标数据库的大访问权限,而您的新 R2 安装不是。

此外,当您在 Compute Emulator 下运行您的应用程序时,它使用 IIS 来运行您的 Web 角色,即默认的应用程序池标识(网络服务)。但是,当您在没有 Cloud Project(Compute Emulator)的情况下运行您的应用程序时,它使用 Casini(AKA Web 开发服务器),它在用于 Visual Studio 的帐户下运行(猜测您的用户帐户的升级版本)。而且因为您的用户帐户确实可以访问数据库,所以您的应用程序也可以。

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

于 2011-11-14T08:58:25.080 回答
0

我遇到了同样的问题,但是在从 web.config 中的连接字符串中删除“Integrated Security=True”之后,mvc-app 也无法连接,这一次是因为实体框架错误。

但幸运的是,这种解决方法终于解决了我的问题!

于 2012-05-16T17:52:36.130 回答