1

先週まで、R2 以外の SQL Server 2008 で開発を行っていましたが、ASP.NET MVC Web アプリケーションは Azure Compute Emulator で正常に動作していました。実行中にデータベース接続を確立します。

SQL Server 2008 R2 に切り替えた後 (以前に非 R2 バージョンをアンインストールしました)、Compute Emulator で実行しているときに Web アプリケーションがデータベースに接続できなくなりました。

興味深い: Azure Compute Emulator の外部でアプリケーションを起動すると、動作します!

例外:

System.Data.SqlClient.SqlException はユーザー コードによって処理されませんでした Message=ログインによって要求されたデータベース "X" を開けません。ログインに失敗しました。ユーザー 'NT AUTHORITY\NETWORK SERVICE' のログインに失敗しました。

何か案は?ありがとう!

4

2 に答える 2

4

接続文字列は「IntegratedSecurity=True」(またはSSPI)であると思います。古いサーバーは、ユーザー「Netword Service」のターゲットデータベースにグランドアクセスするように構成されていましたが、新しいR2インストールはそうではありません。

さらに、Compute Emulatorでアプリを実行すると、IISを使用してWebロールが実行されるため、デフォルトのアプリプールID(ネットワークサービス)になります。ただし、Cloud Project(Compute Emulator)を使用せずにアプリケーションを実行すると、Visual Studioで使用されるアカウント(ユーザーアカウントの昇格バージョンを推測)で実行されるCasini(別名Web開発サーバー)が使用されます。また、ユーザーアカウントにはdabaseへのアクセス権があるため、アプリケーションにもアクセス権があります。

「統合セキュリティ」接続文字列をすべて削除し、クラウド展開を対象とするWindowsAzureアプリケーションを開発するときにSQLServerユーザーに対して使用することを強くお勧めします。SQL Azureは、SQLServerの認証/承認のみをサポートします。

于 2011-11-14T08:58:25.080 に答える
0

私は同じ問題を抱えていましたが、web.config の接続文字列から "Integrated Security=True" を削除した後、今度は Entity-Framework エラーのため、mvc-app も接続できませんでした。

しかし、幸いなことに、この回避策は最終的に私の問題を解決しました!

于 2012-05-16T17:52:36.130 に答える