2017-10-23 1 views
2

ASP.NET Core (v1.1) 웹 응용 프로그램이 있습니다. web.config에는 다음 줄이 있습니다.ASP.NET Core에서 올바른 프로세스 경로를 사용하도록 게시를 구성하는 방법

<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 변수를 사용할 수 있도록 배포 웹 서버에서 구성해야하는 항목은 무엇입니까?

답변

1

Web.config는 편집해야하거나 ASP.NET 핵심 응용 프로그램에 대해 염려 할 필요가없는 내용입니다. IIS가 필요하기 때문에 앱을 시작하기 만하면됩니다. 그 점에서, 그러나 그것은 완벽하게 잘되어야합니다 게시됩니다.

dotnet.exe이 시스템 PATH에 없으면 자동 설치가 필요하므로 런타임 설치에 문제가있을 수 있습니다. 런타임을 재설치하거나 C:\Program Files\dotnet 부분을 시스템 환경 변수 PATH에 수동으로 추가 할 수 있습니다.

+0

응답 해 주셔서 감사합니다. 그러나'C : \ Program Files \ dotnet'은 이미 시스템의 PATH 변수에 있습니다. 따라서 마지막 질문 : "배포 웹 서버에서 시스템 PATH 변수를 사용할 수 있도록 구성하려면 어떻게해야합니까?" 이게 허가 일일까요? 내 appliction 풀 사용자는'C : \ Program Files \ dotnet'에 대한 읽기/실행 권한을 가지고 있습니다 ... – getsetcode

+0

이것은 .NET Core 또는 IIS와는 아무런 관련이 없습니다. 'PATH' 환경 변수는 Windows입니다. 단순히 디렉토리에있는 실행 파일을 명령 줄에서 참조 할 수있게 해줍니다. 그것이 작동하지 않는다면, 먼저 PATH 변수가 사용자 환경 변수가 아닌 시스템 환경 변수에 설정되어 있는지 확인하십시오. 둘째, 컴퓨터를 다시 시작하여 Windows가 환경 변수를 선택하도록 할 수 있습니다. –

+0

고마워, 나는 그 모든 것을 시도했다. 그러나 당신 말이 맞습니다. 이것이 문제가된다면 그것은 문제가 아닙니다. Server Fault에 대한 질문을하고 답변을 얻었다면 답장을 보냅니다 : https://serverfault.com/questions/879977/why-isnt-iis-on-windows-server-2012-able-to-access -system-environment-variables – getsetcode

관련 문제