ユーザー認証を使用して単純なASP.Netコアアプリケーションを作成しました(すべてのEntity FrameworkがWebアプリケーションテンプレートにプリロードされています)。私のappsettings.json
ファイルにあるconnectionString
と"data source = {computerName}\\{serverName}"
セットアップでデータベースに接続しています。ASP.NETコア - 公開後にアプリケーションがデータベースに接続しない
データベースインスタンスとVisual Studioは同じマシンにあります。これは、開発モードとデバッグモードの間にWeb APIにデータを返す際に問題なく動作します。私がそれを公表し、ドメイン名からサイトに移動しようとすると、データベース接続は必要ないウェブページを見ることができますが、データベースからのデータが必要な残りの部分は次のようなページを返します:
エラー。
リクエストの処理中にエラーが発生しました。 開発モード 開発環境にスワップすると、発生したエラーに関する詳細情報が表示されます。の機密情報がエンドユーザーに表示される可能性があるため、展開された アプリケーションでは開発環境を有効にしないでください。ローカルデバッグの場合、 開発環境に ASPNETCORE_ENVIRONMENT環境変数を設定し、アプリケーションを に再起動することで、開発環境を有効にすることができます。
ASPNETCORE_ENVIRONMENT
の環境変数を開発から生産に変更しようとしましたが、成功しませんでした。
私はファイルappsettings.Production.json
がなくても、私のproject.json
ファイルにpublishOptions
からappsettings.Production.json
を追加しようとしているが、これは助けにはなりませんでした。 web.config
ファイルにevironment変数を追加dotnet publish
は、私が開発Visual Studioのセットアップ外部からの私のSQL Serverデータベースに接続するために発行されたWeb APIを得る助けが必要Deployment
を動作しませんでした。
私が考えることのできる最後のことは、接続文字列の理解方法が間違っている可能性があります。 Web APIが接続文字列を使用してサーバー側からデータベースに接続する場合、開発時には同じマシン上にあるので、http://localhost:port#
を呼び出すとうまく動作するはずです。しかし、データベース文字列がクライアント側の呼び出しに基づいている必要がある場合は、ドメイン名とIPアドレスを使用する必要があります。 誰かが私にそれを教えてもらえますか?
唯一のことは、IISマネージャーの中で私がやっていない、やるべきことがあることです。私はそこにも接続文字列を参照してくださいが、接続文字列がアプリケーションの内部にあるので、私たちのためにそれが何であるかは不明です。また、私は同じマシン上にある場合でも、データベースサーバーと通信するために何らかの種類の認証をアプリケーションに与えることを考えていますか?
ご協力いただきありがとうございます。それは私を助けた。私がしなければならなかったのは、BUILTIN \ IIS_IUSRSをDbログインにread/write権限で追加することでした。 – nam