Aspnetcore: 进程内应用程序启动问题

创建于 2018-12-25  ·  3评论  ·  资料来源: dotnet/aspnetcore

你好!
我正在尝试使用进程内托管模型托管 Web 应用程序。 和...
应用程序无法启动。
IIS 响应为 500.30。
ANCM 日志包含此内容。
如果我将 hostsModel 切换到 OutOfProcess — 一切正常。

我的 web.config

<?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::Terminate
[aspnetcorev2.dll] 正在为“C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll”初始化日志。 进程 ID:9476.. 文件版本:12.2.18316.0。 描述:IIS ASP.NET 核心模块 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:\Program Files (x86)dotnetdotnet.exe
'
[aspnetcorev2.dll] 当前进程位数类型检测为 isX64=1
[aspnetcorev2.dll] 处理条目 'C:\Program Filesdotnetdotnet.exe'
[aspnetcorev2.dll] 二进制类型 6
[aspnetcorev2.dll] 通过 where.exe 调用在“C:\Program Filesdotnetdotnet.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' arguments:
[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] 事件日志:“应用程序 '/LM/W3SVC/340/ROOT' 与物理根目录 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\' 遇到意外的托管异常, 异常代码 = '0xc0000005'。 请检查 stderr 日志以获取更多信息。
结束事件日志消息。
[aspnetcorev2_inprocess.dll] 停止进程内工作线程
[aspnetcorev2_inprocess.dll] 停止 CLR
[aspnetcorev2_inprocess.dll] 事件日志:“应用程序 '/LM/W3SVC/340/ROOT' 与物理根目录 'E:\sites\ru-dev-gs-gsite.ext.dev.dodois.com\' 加载 clr 失败和托管应用程序。 CLR 工作线程提前退出'
结束事件日志消息。
[aspnetcorev2_inprocess.dll] 在 c:\b\w\e37dd45d8cd1eaf4\src\iisintegration\src\aspnetcoremodulev2\inprocessrequesthandler\inprocessapplication 处捕获异常“InvalidOperationException”。 每次通话费用:350
[aspnetcorev2_inprocess.dll] 失败的 HRESULT 返回:0x8007023e 在 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::Terminate
````

area-servers servers-iis

最有用的评论

您的 Program.Main 抛出异常。 这可能是由于 CurrentDirectory 问题:#4206。 这是我们目前推荐的解决方法: https :

我在应用建议的修复和解决问题时遇到问题,我不知道它是否应该在当前版本的 .Net Core 2.2 中修复,因为我在运行 InProcess 时仍然遇到相同的错误 - IIS 响应为 500.30。 启用日志我可以看到问题与返回的目录不是正确的目录相同的问题有关。 相反,它返回了系统中运行 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 下运行,应用程序可以正常启动

任何人都可以帮我解决这个问题吗?

所有3条评论

您的 Program.Main 抛出异常。 这可能是由于 CurrentDirectory 问题:#4206。 这是我们目前推荐的解决方法: https :

我认为解决方法已经解决了您的问题。 否则请随意重新打开。

您的 Program.Main 抛出异常。 这可能是由于 CurrentDirectory 问题:#4206。 这是我们目前推荐的解决方法: https :

我在应用建议的修复和解决问题时遇到问题,我不知道它是否应该在当前版本的 .Net Core 2.2 中修复,因为我在运行 InProcess 时仍然遇到相同的错误 - IIS 响应为 500.30。 启用日志我可以看到问题与返回的目录不是正确的目录相同的问题有关。 相反,它返回了系统中运行 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 下运行,应用程序可以正常启动

任何人都可以帮我解决这个问题吗?

此页面是否有帮助?
0 / 5 - 0 等级