:私は、これはほとんどの複製である知っているASP.NETとSQL Server 2008で「ログインユーザーのNT AUTHORITY \ IUSR」をするために失敗しました」エラーとLINQとSystem.Data.SqlClient.SqlExceptionで-ユーザー名」のために失敗したログイン外部プロジェクト/クラスライブラリですが、サーバー上の他のアプリケーションと比較していくつかのものが足りません。理由はわかりません。
使用されているボックス:
Webボックス
SQLボックス
SQLテストボックス
私のアプリケーション:
LINQ-to-SQLを使用するクラスライブラリを参照するASP.NET Webアプリケーションがあります。クラスライブラリで正しく設定された接続文字列。ログインごとにユーザー 'username'のログインに失敗しました-外部プロジェクト/クラスライブラリのLINQでSystem.Data.SqlClient.SqlExceptionを使用して、この接続文字列をWebアプリケーションに追加しました。
接続文字列はSQL資格情報をそのまま使用します(Webアプリとクラスライブラリの両方で):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
この接続は、サーバーエクスプローラーに追加することで機能することが確認されています。これは、.dbmlファイルが使用している接続文字列です。
問題:
次のエラーが発生します。
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
ASP.NETおよびSQL Server 2008でエラー「ユーザー 'NT AUTHORITY \ IUSR'のログインに失敗しました」を参照していますが、これは実際にはローカルネットワークサービスであり、他の非ドメイン名を使用すると機能しません。
しかし、SQLボックスとSQLテストボックスの両方のSQL Management Studioをチェックしていて、どちらもNT AUTHORITY/NETWORK SERVICE
[セキュリティ]-> [ログイン]の下にあるため、データベースレベルで[セキュリティ]-> [ユーザー]の下にリストされていないが、データベースレベルのセキュリティがあるため、混乱しています。 ->ユーザー接続文字列にユーザーを表示します。
WebサーバーのNTFSレベルでは、ネットワークサービスがフルコントロールを持っている権限があります。
私が混乱しているのは、SQL ServerとSQL Test Boxの両方でデータベースを参照する他の多くのWebアプリケーションがWebサーバー上にあり、それらがすべて機能しているためです。しかし、クラスライブラリを使用している以外は、それらと現在のアプリケーションの違いを見つけることはできません。それは重要ですか?NTFSアクセス許可の確認、サーバーレベルとデータベースレベルでのセキュリティログインの設定、接続文字列と接続方法(SQL Server資格情報)、およびIISアプリケーションプールとその他のフォルダーオプションはすべて同じです。
これらのアプリケーションが、いずれかのSQLボックスの権限にmachinename $を追加せずに機能するのはなぜですか?しかし、それがこの問題を修正するために1つのリンクが私に言っていることです。