.NET Core 32位(x86)版本的HTTP错误500.31-ANCM无法找到本地依赖性此问题的常见解决方案错误:

时间:2020-05-27 20:04:38

标签: asp.net-core iis .net-core x86 32-bit

What steps should I take to build and run .net core Web API application in 32-bit environment/runtime?

这是我之前提出的问题的延续。

我们使用以下技术开发了.NET Core Web API应用程序:

-NET Core(3.1)

-Visual Studio 2019

不幸的是,我们必须将该应用程序部署到以下环境:

-32位环境

-Windows Server 2008 R2 Enterprise(Service Pack 1)

-IIS 7.5版

-8 GB RAM

(此外,它必须是一个进程内的,因为我们只希望.NET Core Web API应用程序位于IIS Server中)*

在使用Visual Studio 2019的开发计算机上,我安装了Net Core 3.1 x86 sdk版本(即.NET Core 32位版本)

此外,在Windows 10环境变量的Path变量中,我确保在.NET Core 64位版本目录路径上方指定了.NET Core 32位版本目录路径:

enter image description here

因此,我在Visual Studio 2019中启动了该应用程序。 另外,在.NET Core Web Api Web应用程序部分的属性中,我确保选择了x86设置值: 在VS中强制x86转到“属性”>“构建并将平台目标从任何CPU更改为x86” enter image description here

还有调试部分,我有:

enter image description here

此外,在Visual Studio 2019企业中--->“工具”(在主菜单中) 我们取消了“将IIS Express的64位版本用于网站和项目”

enter image description here

应用程序的blabhblah.csproj文件具有以下设置:

 < Project Sdk="Microsoft.NET.Sdk.Web" >

   < PropertyGroup >
     < TargetFramework >netcoreapp3.1 < /TargetFramework >

     < AspNetCoreHostingModel > InProcess < /AspNetCoreHostingModel >

     < PlatformTarget > x86 < /PlatformTarget > 

  < /PropertyGroup >

   < PropertyGroup Condition="'$(MSBuildRuntimeType)' == 'Core'" >

      < GenerateResourceMSBuildArchitecture > CurrentArchitecture <  /GenerateResourceMSBuildArchitecture >

     < GenerateResourceMSBuildRuntime > CurrentRuntime < /GenerateResourceMSBuildRuntime >

   < /PropertyGroup >……………..


  < ItemGroup >

    < PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.7" / >

    < PackageReference Include="Microsoft.Data.SqlClient" Version="1.1.3" / >

    < PackageReference Include="Swashbuckle.AspNetCore" Version="5.4.1" / >

    < PackageReference Include="Swashbuckle.Core" Version="5.6.0" / >


  < /ItemGroup >

此外,我在Web应用程序的根目录中创建了Directory.Build.targets文件:

< Project >  
    < PropertyGroup 
      Condition="'$(OS)' == 'Windows_NT' and
                 '$(PlatformTarget)' == 'x86' and
                 '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and
                 '$(SelfContained)' != 'true'"
                   >

    < RunCommand >$(MSBuildProgramFiles32)\dotnet\dotnet< /RunCommand >   

< /PropertyGroup > 

< /Project >

但是,当我运行应用程序时,出现以下错误:

HTTP错误500.31-ANCM无法找到常见的本地依赖项 解决此问题的方法:指定的版本 找不到Microsoft.NetCore.App或Microsoft.AspNetCore.App。 ANCM检测到的特定错误:无法执行,因为 找不到指定的命令或文件。可能的原因 包括:*您拼错了内置dotnet命令。 *您打算 执行.NET Core程序,但dotnet-%LAUNCHER_ARGS%不执行 存在。 *您打算运行全局工具,但以dotnet为前缀 在PATH上找不到具有该名称的可执行文件。 故障排除步骤:检查系统事件日志中是否有错误消息 启用记录应用程序进程的标准输出消息的步骤 调试程序到应用程序并检查更多信息 访问:https://go.microsoft.com/fwlink/?LinkID=2028526

有人可以帮助我确定如何解决上述“ dotnet”丢失错误吗? 我需要对设置/配置进行其他修改吗?

1 个答案:

答案 0 :(得分:0)

@akseli @omajid @ perry-qian-msft @ yongqing-yu 很抱歉,此方法无法正常工作,我们不得不放弃使用.NET Core技术(必须迁移到.NET Framework 4.7。 2)因为它可以正常工作一会儿,然后给我们500错误,然后再出现401错误。我认为这与配置有关,因为我们正在使用:

-NET Core(3.1)

IIS服务器内的进程内

因此,在独立的IIS服务器中,我们不必像“非托管代码”一样在其自己的应用程序池中运行.NET Core(3.1)应用程序,因为它们都是In-Process,.NET Core(3.1)可以在IIS上运行。无论如何,我们没有时间解决此问题,因此我们迁移到.NET Framework 4.7.2

@akseli @omajid @ perry-qian-msft @ yongqing-yu全部感谢您的答复。
我的团队技术负责人通过在Visual Studio 2019中将.NET Core Web API应用程序的构建设置指定为“任何CPU”来找到解决方案 (在Visual Studio 2019中,在.NET Core Web API应用程序上单击鼠标右键,然后从下拉上下文菜单中选择属性,然后在显示窗口窗格时,选择``构建''选项卡。) enter image description here

此外,在IIS服务器上,我的团队技术负责人确保已部署的.NET Core Web API应用程序的应用程序池具有以下设置(重要的是要记住,它是“非托管代码”: enter image description here