2016-04-27 10 views
1

SQLデータベースからデータを取得する.NET MVCプロジェクトがあります。SQLデータベースを使用したIIS Webパッケージのデプロイメントのトラブルシューティング

私のローカルマシンでデバッグモードでプロジェクトを実行すると、エラーなく実行されます。しかし、Microsoftのパブリッシュウィザード(.zipを作成し、Webサイトが指しているwwwRootフォルダに.zipを移動)を使用してIISサーバーにプロジェクトを展開した後、私は問題が発生します。 URLアドレスを使用してウェブサイトのメインページを開きますが、ログインIDを入力すると、「Invalid user ID」というエラーメッセージが表示されます。

有効なIDが入力されたときにこのエラーが発生するのは、データベースにログイン資格情報をチェックできない場合だけです。だから、SQLプロファイラを使用して、私はデータベースにクエリが行われたかどうかを調べようとしました。答えは「いいえ」と思われます。

IIS環境で接続文字列が正しく構成されていることを確認しました。この問題に関するコード関連のエラーはないと見なすことができます。

質問:どのような他のトラブルシューティング方法は、このエラーのルートが何であるかを見るためにIISとSQLの相互作用のために利用可能な、または問題を試してみて、排除する必要がある場合がありますどのような提案を

+1

IISサーバーのアプリケーションイベント。ファイアウォールはオンですか?それらは同じドメインにありますか? IISサーバーは実際にSQLサーバーを '参照'できますか?さらに、ログイン試行の失敗/成功を記録する必要があるかもしれません。デフォルトでは、SQL Serverは失敗した試行を記録しません。 – WickedFan

+0

IISサーバー(SQLサーバーをホストするのと同じマシン)のイベントログに、 "ユーザー 'IIS APPPOOL \ OPOC'のログインに失敗しました。理由:明示的に指定されたデータベースを開くことができませんでした。このIISサーバーはこのプロジェクトのテスト環境をしばらく実行していたため、これらは同じドメインにあると確信しています。 SQLサーバを見ることができるかどうかはわかりませんが、いくつかの変更を加えた後にアプリケーションを再デプロイする前にそれが動作していたからと思いました。 –

+0

私はSQLサーバーのセキュリティフォルダには、APPPOOL \ OPOCがログインリストに追加されているので、私が使用しているAppPoolは問題ではないと思いますが、IISの展開にはまったく新しいものです私は間違っている可能性があります –

答えて

1

は、データベースにユーザを追加します。このユーザーにデータベースへのアクセスを許可します。コード内の接続文字列には資格情報が必要です。なぜあなたのマシンで動作するのかは、あなたがシステム管理者かサーバ上のものなのであろう。接続文字列のパラメータに資格情報を入力する方法を探します。

https://www.youtube.com/watch?v=Sp6lR15iWMk

+0

プロダクションサーバを見てからもう一つ見つけたのは、NetworkServiceに設定されたAppPoolのアイデンティティです。私はテスト環境にこれを行い、同様に動作します。私は、 "NetworkService"アイデンティティは、そのサーバーへの有効なネットワークアクセス権を持っている人すべてに権限を与えていると仮定します。 –

+1

Uhm ..ドメイン管理された環境で 'NetworkService'を明確にしてください。ドメインレベルでサービスアカウントを作成することを強くお勧めします。 – WickedFan

+0

興味深いことに、警告ありがとう!それは非常に重要なアプリケーションではないので、私は元々このすべてを作成した前任者は、彼が非常に頻繁に雇用したいと思っていたように思っていた、アイデンティティをLocalSystemに設定すると、ドメイン内のすべてのコンピュータがアプリケーションにアクセスできるようになります(ドメイン特権に応じて許可されている限り)か、ホストボックスのステータスが高くなる必要がありますか?それでも私の頭の中でこれを並べ替えるが、他の誰よりも良い情報を与えているので、私は頼むと思った。 –

関連する問題