0

データベースに接続し、ユーザーのテーブルからユーザー名を取得し、それをで取得したユーザー名と照合するアプリケーションがあります。System.Security.Principal.WindowsIdentity.GetCurrent.Name

私のローカルホストでは、すべてが正常に機能します。データベースは開発サーバーに存在しますが、アプリケーションは私のローカルホストにあります。私の承認と認証のテクニックはすべてスムーズに実行されています。

ただし、アプリケーションを開発サーバーに公開すると、次のエラーが発生します。

Cannot open database requested in login 'databaseName'. Login fails.
Login failed for user 'DevelopmentServerName\ASPNET'. 

これを引き起こす原因に指を置くことができません。どんな助けでも大歓迎です。

ありがとう!

編集:これが接続文字列です!

  <add name="connectionStringName" connectionString="Initial Catalog=myDatabase;Data Source=DevelopmentServerName;Integrated Security=True"
     providerName="System.Data.SqlClient" />

また、文脈のために。この認証では、ユーザーのWindowsユーザー名を取得し、データベース内のユーザー名と照合する必要があります。ユーザーには、Computername \ Mynameユーザー名がデータベースに組み込まれます(プログラムの必要なセクションの使用が許可されている場合、つまり)。

再度、感謝します :)

4

4 に答える 4

3

アプリケーションがASPNETアカウントでデータベースに接続しようとしているようです。ASPNETアカウントでは、自分でログインするのではなく、開発サーバーでのアクセス許可が制限されている可能性があります(ローカルマシンが実際にWindows IDを使用している可能性があります)。私は2つの潜在的な解決策を見ることができます。

  1. 必ずweb.configファイルのsystem.webセクションに追加してください。

  2. 実際にご使用の環境でこのアカウントの接続が許可されている場合は、システム管理者およびSQL管理者に問い合わせて、ASPNETアカウントにデータベースへの接続が適切に許可されていることを確認してください。

接続文字列など、質問にコードを追加すると、問題が解決する場合があります。

編集:さて、あなたは確かにIntegratedSecurityを使用しているので、通常、この種の設定(なりすましを使用)では、認証のためにユーザー名とパスワードを追加するように求められていることを確認する必要があります。

同様の設定があります。これを行うには、仮想ディレクトリのIIS設定に移動し、[ディレクトリセキュリティ]タブを選択して、[匿名アクセスと認証の制御]の下にある[編集]ボタンをクリックする必要があります。

匿名アクセスがオフになっていることを確認してください。環境に対して適切な認証を有効にする必要がある場合があります。残念ながら、ここではまだ基本認証(クリアテキスト)を使用していますが、統合Windows認証でも機能する可能性があります。それはあなたの環境に依存します。

これでうまくいったようだったので、このコメントをメインの投稿に追加します...

IIS環境に基づいて必要なものを処理するための適切な構成セットアップを取得するのに役立つ、この投稿を見つけました。

于 2009-06-11T16:45:29.373 に答える
0

答えはあなたの接続文字列にあるかもしれません。私の推測では、統合認証を使用してデータベースにログインしていると思います。アプリケーションがあなたの資格情報を使用しているので、それがあなたのマシンであるとき、これはうまく働きます。開発サーバーに公開するときは、aspNetユーザーを使用しているため、ログインするための適切な資格情報がありません。このユーザーをデータベースサーバーに追加するか、SQL認証を使用するように接続文字列を変更します。

于 2009-06-11T16:45:34.583 に答える
0

サーバーがデータベースを認識できないようにするファイアウォール設定である可能性があります。

また、接続文字列と関係がある場合もあります。web.configファイルでユーザー名とパスワードの組み合わせ以外のものを使用している場合は、データベースサーバーに接続を許可するように説得するために、追加の構成が必要になる可能性があります。

于 2009-06-11T16:46:41.710 に答える
0

あなたがやりたいのは、Webページの呼び出し元になりすますことのようです。これを行うには、web.configに行を追加する必要があります。

<identity impersonate="true" />

説明については、この記事を参照してください。

于 2009-06-11T16:51:00.750 に答える