์ฌ๋ณด์ธ์!
inprocess ํธ์คํ
๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์น ์ฑ์ ํธ์คํ
ํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ...
์ ํ๋ฆฌ์ผ์ด์
์ ์์ํ ์ ์์ต๋๋ค.
500.30์ผ๋ก IIS ์๋ต.
ANCM ๋ก๊ทธ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
HostingModel์ OutOfProcess๋ก ์ ํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์
๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\Dodo.ClientSite.exe" arguments="" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" hostingModel="InProcess">
<handlerSettings>
<handlerSetting name="debugFile" value=".\aspnetcore-debug.log" />
<handlerSetting name="debugLevel" value="FILE,TRACE" />
</handlerSettings>
</aspNetCore>
</system.webServer>
</configuration>
```
[aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::OnGlobalConfigurationChange 'MACHINE/WEBROOT/APPHOST/RU-DEV-GS-GSITE.EXT.DEV.DODOIS.COM'
[aspnetcorev2.dll] ์์ฉ ํ๋ก๊ทธ๋จ '/LM/W3SVC/340/ROOT' ์ค์ง ์ค
[aspnetcorev2_inprocess.dll] ํ์ผ ๊ฐ์์ ์ค๋ ๋ ์ค์ง
[aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::OnGlobalStopListening
[aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::์ข
๋ฃ
[aspnetcorev2.dll] 'C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll'์ ๋ํ ๋ก๊ทธ๋ฅผ ์ด๊ธฐํํ๋ ์ค์
๋๋ค. ํ๋ก์ธ์ค ID: 9476.. ํ์ผ ๋ฒ์ : 12.2.18316.0. ์ค๋ช
: IIS ASP.NET Core ๋ชจ๋ V2. ์ปค๋ฐ: ce8cf65589734f82b0536c543aba5bd60d0a5a98.
[aspnetcorev2.dll] ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ hostfxr ๋งค๊ฐ ๋ณ์ ํ์ธ: '.\Dodo.ClientSite.exe' ์ธ์: '' ๊ฒฝ๋ก: 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\'
[aspnetcorev2.dll] ์๋ ค์ง dotnet.exe ์์น: ''
[aspnetcorev2.dll] ํ๋ก์ธ์ค ๊ฒฝ๋ก '.\Dodo.ClientSite.exe'๊ฐ dotnet์ด ์๋๋ฏ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ถํธ์คํธ๋ํผ๋ฅผ ์ฌ์ฉํ์ฌ ๋
๋ฆฝ ์คํํ ๋๋ ์ด์ํ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
[aspnetcorev2.dll] 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\Dodo.ClientSite.dll'์์ application.dll ํ์ธ ์ค
[aspnetcorev2.dll] 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\hostfxr.dll'์์ hostfxr.dll ํ์ธ ์ค
[aspnetcorev2.dll] hostfxr.dll์ 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\hostfxr.dll'์์ ๋ก์ปฌ ์ฑ์ ์ฐพ์์ผ๋ฉฐ, ๋ฐ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด์ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
[aspnetcorev2.dll] 'dotnet'์์ dotnet.exe์ ๋ํ ์ ๋ ๊ฒฝ๋ก ํ์ธ
[aspnetcorev2.dll] where.exe๋ฅผ ํธ์ถํ์ฌ dotnet.exe๋ฅผ ์ฐพ์ต๋๋ค.
[aspnetcorev2.dll] where.exe ํธ์ถ์ด ๋ฐํ๋จ: 'C:\Program Filesdotnetdotnet.exe
C:\ํ๋ก๊ทธ๋จ ํ์ผ(x86)dotnetdotnet.exe
'
[aspnetcorev2.dll] isX64=1๋ก ๊ฐ์ง๋ ํ์ฌ ํ๋ก์ธ์ค ๋นํธ ์ ์ ํ
[aspnetcorev2.dll] ํญ๋ชฉ 'C:\Program Filesdotnetdotnet.exe' ์ฒ๋ฆฌ ์ค
[aspnetcorev2.dll] ๋ฐ์ด๋๋ฆฌ ์ ํ 6
[aspnetcorev2.dll] 'C:\Program Filesdotnetdotnet.exe'์์ where.exe ํธ์ถ์ ํตํด dotnet.exe๋ฅผ ์ฐพ์์ต๋๋ค.
[aspnetcorev2.dll] 'C:\Program Filesdotnetdotnet.exe'์์ hostfxr.dll์ ๋ํ ์ ๋ ๊ฒฝ๋ก ํ์ธ
[aspnetcorev2.dll] hostfxr.dll์ 'C:\Program Filesdotnet\host\fxr\2.2.0\hostfxr.dll'์ ์์ต๋๋ค.
[aspnetcorev2.dll] ๊ตฌ๋ฌธ ๋ถ์๋ hostfxr ์ต์
: dotnet ์์น: 'C:\Program Filesdotnetdotnet.exe' hostfxr ๊ฒฝ๋ก: 'C:\Program Filesdotnet\host\fxr\2.2.0\hostfxr.dll' ์ธ์:
[aspnetcorev2.dll] ์ธ์[0] = 'C:\Program Filesdotnetdotnet.exe'
[aspnetcorev2.dll] ์ธ์[1] = 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\Dodo.ClientSite.dll'
[aspnetcorev2.dll] c:\b\w\e37dd45d8cd1eaf4\src\iisintegration\src\aspnetcoremodulev2\commonlib\fileoutputmanager.dll cpp:142 LastError๋ก ์์
์คํจ: 32 HR: 0x80070020
[aspnetcorev2.dll] ์์ฒญ ์ฒ๋ฆฌ๊ธฐ ๋ก๋: 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\aspnetcorev2_inprocess.dll'
[aspnetcorev2.dll] ํธ๋ค๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์์ฑ
[aspnetcorev2_inprocess.dll] 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\aspnetcorev2_inprocess.dll'์ ๋ํ ๋ก๊ทธ ์ด๊ธฐํ ์ค. ํ๋ก์ธ์ค ID: 9476.. ํ์ผ ๋ฒ์ : 12.2.18316.0. ์ค๋ช
: IIS ASP.NET Core ๋ชจ๋ V2 ์์ฒญ ์ฒ๋ฆฌ๊ธฐ. ์ปค๋ฐ: ce8cf65589734f82b0536c543aba5bd60d0a5a98.
[aspnetcorev2_inprocess.dll] ์ด๊ธฐํ ๋๊ธฐ ์ค
[aspnetcorev2_inprocess.dll] ํ๋ก์ธ์ค ๋ด ์์
์ ์ค๋ ๋ ์์
[aspnetcorev2_inprocess.dll] ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ hostfxr ๋งค๊ฐ ๋ณ์ ํ์ธ: '.\Dodo.ClientSite.exe' ์ธ์: '' ๊ฒฝ๋ก: 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\'
[aspnetcorev2_inprocess.dll] ์๋ ค์ง dotnet.exe ์์น: 'C:\Program Filesdotnetdotnet.exe'
[aspnetcorev2_inprocess.dll] ํ๋ก์ธ์ค ๊ฒฝ๋ก '.\Dodo.ClientSite.exe'๊ฐ dotnet์ด ์๋๋ฏ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ถํธ์คํธ๋ํผ๋ฅผ ์ฌ์ฉํ์ฌ ๋
๋ฆฝ ์คํํ ๋๋ ์ด์ํ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
[aspnetcorev2_inprocess.dll] 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\Dodo.ClientSite.dll'์์ application.dll ํ์ธ ์ค
[aspnetcorev2_inprocess.dll] 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\hostfxr.dll'์์ hostfxr.dll ํ์ธ ์ค
[aspnetcorev2_inprocess.dll] hostfxr.dll์ 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\hostfxr.dll'์์ ๋ก์ปฌ ์ฑ์ ์ฐพ์๊ณ , ๋ฐ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด์ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํ์ต๋๋ค.
[aspnetcorev2_inprocess.dll] 'C:\Program Filesdotnetdotnet.exe'์์ hostfxr.dll์ ๋ํ ์ ๋ ๊ฒฝ๋ก ํ์ธ
[aspnetcorev2_inprocess.dll] hostfxr.dll์ 'C:\Program Filesdotnet\host\fxr\2.2.0\hostfxr.dll'์ ์์ต๋๋ค.
[aspnetcorev2_inprocess.dll] ๊ตฌ๋ฌธ ๋ถ์๋ hostfxr ์ต์
: dotnet ์์น: 'C:\Program Filesdotnetdotnet.exe' hostfxr ๊ฒฝ๋ก: 'C:\Program Filesdotnet\host\fxr\2.2.0\hostfxr.dll' ์ธ์:
[aspnetcorev2_inprocess.dll] ์ธ์[0] = 'C:\Program Filesdotnetdotnet.exe'
[aspnetcorev2_inprocess.dll] ์ธ์[1] = 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com.\Dodo.ClientSite.dll'
[aspnetcorev2_inprocess.dll] ๊ด๋ฆฌ๋๋ ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค. -1073741819
[aspnetcorev2_inprocess.dll] ์ข
๋ฃ ์ํ์ค 1 ์์
[aspnetcorev2_inprocess.dll] Clr ์ค๋ ๋ ๋๊ธฐ ์ข
๋ฃ: clrThreadExited: 1
[aspnetcorev2_inprocess.dll] c:\b\w\e37dd45d8cd1eaf4\src\iisintegration\src\aspnetcoremodulev2\commonlib\fileoutputmanager.dll cpp:142 LastError๋ก ์์
์คํจ: 32 HR: 0x80070020
[aspnetcorev2_inprocess.dll] ์ด๋ฒคํธ ๋ก๊ทธ: ๋ฌผ๋ฆฌ์ ๋ฃจํธ 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\'์ด ์๋ '์์ฉ ํ๋ก๊ทธ๋จ '/LM/W3SVC/340/ROOT'์์ ์๊ธฐ์น ์์ ๊ด๋ฆฌ ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค. , ์์ธ ์ฝ๋ = '0xc0000005'. ์์ธํ ๋ด์ฉ์ stderr ๋ก๊ทธ๋ฅผ ํ์ธํ์ธ์.'
์ด๋ฒคํธ ๋ก๊ทธ ๋ฉ์์ง ์ข
๋ฃ.
[aspnetcorev2_inprocess.dll] ํ๋ก์ธ์ค ๋ด ์์
์ ์ค๋ ๋ ์ค์ง
[aspnetcorev2_inprocess.dll] CLR ์ค์ง
[aspnetcorev2_inprocess.dll] ์ด๋ฒคํธ ๋ก๊ทธ: ๋ฌผ๋ฆฌ์ ๋ฃจํธ 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\'์ด ์๋ '์์ฉ ํ๋ก๊ทธ๋จ '/LM/W3SVC/340/ROOT'์์ clr์ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค. ๋ฐ ๊ด๋ฆฌ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์
๋๋ค. CLR ์์
์ ์ค๋ ๋๊ฐ ์กฐ๊ธฐ์ ์ข
๋ฃ๋์์ต๋๋ค'
์ด๋ฒคํธ ๋ก๊ทธ ๋ฉ์์ง ์ข
๋ฃ.
[aspnetcorev2_inprocess.dll] c:\b\w\e37dd45d8cd1eaf4\src\iisintegration\src\aspnetcoremodulev2\inprocessrequesthandler\inprocessapplication์์ ์์ธ 'InvalidOperationException'์ด ๋ฐ์ํ์ต๋๋ค. cpp:350
[aspnetcorev2_inprocess.dll] ์คํจํ HRESULT๊ฐ ๋ฐํ๋จ: 0x8007023e at c:\b\w\e37dd45d8cd1eaf4\src\iisintegration\src\aspnetcoremodulev2\inprocessrequesthandler\dllmain. cpp:120
[aspnetcorev2_inprocess.dll] ์์ฉ ํ๋ก๊ทธ๋จ 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\'์์ app_offline ๋ชจ๋ํฐ๋ง ์์
[aspnetcorev2_inprocess.dll] ํ์ผ ๊ฐ์์ ์ค๋ ๋ ์์
[aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::OnGlobalConfigurationChange 'MACHINE/WEBROOT/APPHOST/RU-DEV-GS-GSITE.EXT.DEV.DODOIS.COM'
[aspnetcorev2.dll] ์์ฉ ํ๋ก๊ทธ๋จ '/LM/W3SVC/340/ROOT' ์ค์ง ์ค
[aspnetcorev2_inprocess.dll] ํ์ผ ๊ฐ์์ ์ค๋ ๋ ์ค์ง
[aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::OnGlobalStopListening
[aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::์ข
๋ฃ
````
๊ทํ์ Program.Main์์ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ง๋ CurrentDirectory ๋ฌธ์ ์ธ #4206 ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค. ํ์ฌ ๊ถ์ฅ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/aspnet/Docs/blob/master/aspnetcore/host-and-deploy/aspnet-core-module/samples_snapshot/2.x/CurrentDirectoryHelpers.cs. ์ด๊ฒ์ ํจ์น์์ ์์ ๋ ๊ฒ์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ ๋กญ๊ฒ ์ฌ๊ฐํ์ญ์์ค.
๊ทํ์ Program.Main์์ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ง๋ CurrentDirectory ๋ฌธ์ ์ธ #4206 ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค. ํ์ฌ ๊ถ์ฅ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/aspnet/Docs/blob/master/aspnetcore/host-and-deploy/aspnet-core-module/samples_snapshot/2.x/CurrentDirectoryHelpers.cs. ์ด๊ฒ์ ํจ์น์์ ์์ ๋ ๊ฒ์ ๋๋ค.
์ ์๋ ์์ ์ฌํญ์ ์ ์ฉํ๊ณ ํ์ฌ ๋ฒ์ .Net Core 2.2์์ ์์ ํด์ผ ํ๋์ง ์ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. InProcess๋ฅผ ์คํํ ๋ ์ฌ์ ํ ๋์ผํ ์ค๋ฅ(500.30์ IIS ์๋ต)๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ก๊ทธ๋ฅผ ํ์ฑํํ๋ฉด ๋ฐํ๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฌ๋ฐ๋ฅธ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ผํ ๋ฌธ์ ์ ๊ด๋ จ๋์ด ์์์ ์ ์ ์์ต๋๋ค. ๋์ ์์คํ ์์ IIS ์๋น์ค๊ฐ ์คํ๋๋ ๊ฒฝ๋ก๋ฅผ ๋ฐํํ์ต๋๋ค. ์์ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ํด CurrentDirectoryHelper.cs๋ฅผ ๋ด ํ๋ก์ ํธ์ ๋ณต์ฌํ๊ณ SetBasePath๋ฅผ ์ค์ ํ๊ธฐ ์ ์ Program.cs์์ ํธ์ถํฉ๋๋ค.
logger.LogWarning($"Applying Patch to fix Current Directory issue. Current Directory: {Environment.CurrentDirectory}");
//TODO: the line below can be removed when the bug with InProcess method is fixed (more details, follow the class definition and read the comments)
CurrentDirectoryHelpers.SetCurrentDirectory();
logger.LogWarning($"Fix applied. Current Directory now is: {Environment.CurrentDirectory}");
์์ ์ฌํญ์ ๊ทธ๋๋ก ์ ์ฉํด๋ ์ฌ์ ํ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์์ฑ๋ฉ๋๋ค.
OutOfProcess๋ก ์คํ ์ค์ด๊ณ IIS Express์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ์์๋ฉ๋๋ค.
๋๊ตฌ๋ ์ง ์ด ์ผ์ ๋์์ค ์ ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ์๋ ์์ ์ฌํญ์ ์ ์ฉํ๊ณ ํ์ฌ ๋ฒ์ .Net Core 2.2์์ ์์ ํด์ผ ํ๋์ง ์ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. InProcess๋ฅผ ์คํํ ๋ ์ฌ์ ํ ๋์ผํ ์ค๋ฅ(500.30์ IIS ์๋ต)๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ก๊ทธ๋ฅผ ํ์ฑํํ๋ฉด ๋ฐํ๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฌ๋ฐ๋ฅธ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ผํ ๋ฌธ์ ์ ๊ด๋ จ๋์ด ์์์ ์ ์ ์์ต๋๋ค. ๋์ ์์คํ ์์ IIS ์๋น์ค๊ฐ ์คํ๋๋ ๊ฒฝ๋ก๋ฅผ ๋ฐํํ์ต๋๋ค. ์์ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ํด CurrentDirectoryHelper.cs๋ฅผ ๋ด ํ๋ก์ ํธ์ ๋ณต์ฌํ๊ณ SetBasePath๋ฅผ ์ค์ ํ๊ธฐ ์ ์ Program.cs์์ ํธ์ถํฉ๋๋ค.
logger.LogWarning($"Applying Patch to fix Current Directory issue. Current Directory: {Environment.CurrentDirectory}"); //TODO: the line below can be removed when the bug with InProcess method is fixed (more details, follow the class definition and read the comments) CurrentDirectoryHelpers.SetCurrentDirectory(); logger.LogWarning($"Fix applied. Current Directory now is: {Environment.CurrentDirectory}");
์์ ์ฌํญ์ ๊ทธ๋๋ก ์ ์ฉํด๋ ์ฌ์ ํ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์์ฑ๋ฉ๋๋ค.
OutOfProcess๋ก ์คํ ์ค์ด๊ณ IIS Express์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ์์๋ฉ๋๋ค.
๋๊ตฌ๋ ์ง ์ด ์ผ์ ๋์์ค ์ ์์ต๋๊น?