2017-10-23 3 views
2

私はASP.NET Core(v1.1)Webアプリケーションを使用しています。 web.configには次の行があります。ASP.NETコアで正しいプロセスパスが使用されるようにパブリッシングを設定する方法

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" /> 

これは私のローカルIIS Expressがアプリケーションをローカルで起動するために使用することを理解しています。

私は現在、リモートサーバーへの自動展開の一部として公開を設定しています。公開後、web.configが次のように変更されました。

<aspNetCore processPath="dotnet" arguments=".\MyProject.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" /> 

このエラーは、リモートサーバーに展開されたときに発生します。 processPathを完全な実行可能ファイルパス(C:\ Program Files \ dotnet \ dotnet.exe)に変更すると、問題が解決されました。 another SO questionへの応答は、ハッカーがシステムのPATH変数を対象とすることを防ぐための意図的なセキュリティ機能である可能性があることを示しています。私は、そのパスを明示的に設定するためにソースのweb.configを変更しようとしましたが、残念ながらサイトをローカルで実行するたびに値が%LAUNCHER_PATH%に戻されます。

私の質問は、公開アプリケーションに正しいプロセスパスが含まれていることを確認する方法です。または、正しい質問は、システムのPATH変数を使用できるように、展開Webサーバーで何を設定する必要がありますか?

答えて

1

Web.configは、編集する必要があるものではなく、ASP.NET Coreアプリケーションで心配する必要もありません。 IISが必要なのは、単にアプリケーションを起動するためだけです。その点では、しかしそれは完全にうまくいっているべきです。

dotnet.exeがシステムPATHにない場合は、ランタイムのインストールに問題が発生する可能性があります。これは自動的に発生するためです。ランタイムを再インストールするか、単にC:\Program Files\dotnet部分をシステム環境変数PATHに手動で追加することができます。

+0

応答はありがたいですが、 'C:\ Program Files \ dotnet'はすでにシステムの' PATH'変数にあります。したがって、私の最終的な質問:「システムのPATH変数を使用できるようにするには、デプロイメントWebサーバーで何を設定する必要がありますか?これは許可のものでしょうか?私のapplictionプールユーザーは、 'C:\ Program Files \ dotnet'に対して読み取り/実行権限を持っています... – getsetcode

+0

これは.NET CoreやIISとはまったく関係ありません。 'PATH'環境変数はWindowsのものです。ディレクトリ内の実行可能ファイルは、コマンドラインでフルパスを前に置かなくても使用できるようになります。それが動作しない場合は、最初に、 'PATH'変数がユーザ環境変数ではなくシステム環境変数に設定されていることを確認してください。次に、マシンを再起動して、Windowsに環境変数を取得させようとするかもしれません。 –

+0

ありがとう、私はすべてを試しました。しかし、あなたが正しいです、もしこれが問題ならば、それはSOのための質問ではありません。私はServer Faultに関する質問をして、答えが得られたかどうかを報告します:https://serverfault.com/questions/879977/why-isnt-iis-on-windows-server-2012-able-to-access -system-environment-variables – getsetcode

関連する問題