2017-03-16 6 views
10

ユーザー認証を使用して単純な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マネージャーの中で私がやっていない、やるべきことがあることです。私はそこにも接続文字列を参照してくださいが、接続文字列がアプリケーションの内部にあるので、私たちのためにそれが何であるかは不明です。また、私は同じマシン上にある場合でも、データベースサーバーと通信するために何らかの種類の認証をアプリケーションに与えることを考えていますか?

答えて

7

多くの研究の後、最終的に「iisでWeb APIを展開する方法」を検索しました。Host ASP.NET Web API in IIS using Visual Studio Publishから、セキュリティエンティティBUILTIN \ IIS_IUSRSを追加する必要があることがわかりました。その後、私のデータベーステーブルへのマッピングを配置し、自分のホストされたIIS Web APIからのアクセスを許可するためにデータベースのためのdb_datareader(とおそらくdb_datawriter)をIUSERに与えます。私たちは、ASP.NET v4.0のアプリケーションプールは、必ずIIS APPPOOL \ ASP.NET V4を作る使用しているとIIS APPPOOL \ ASP.NET v4.0の の下にデータベースへのアクセス

を述べる部分と、上記のリンクから、この.0がデータベースサーバー - >セキュリティ - >ログインに追加されます。

+0

ご協力いただきありがとうございます。それは私を助けた。私がしなければならなかったのは、BUILTIN \ IIS_IUSRSをDbログインにread/write権限で追加することでした。 – nam

関連する問題