【问题标题】:.NET Core 32-bit (x86) version's HTTP Error 500.31 - ANCM Failed to Find Native Dependencies Common solutions to this issue Error:.NET Core 32 位 (x86) 版本的 HTTP 错误 500.31 - ANCM 无法找到本机依赖项 此问题的常见解决方案 错误:
【发布时间】:2020-05-27 20:04:38
【问题描述】:

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 内存

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

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

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

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

对于调试部分,我有:

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

应用程序的 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”缺失错误吗? 我需要对设置/配置进行任何其他修改吗?

【问题讨论】:

  • 这个错误是在Windows Server 2008 R2的环境下出现的吗?还是开发环境产生的错误?

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


【解决方案1】:

@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) 应用程序作为“非托管代码”在其自己的应用程序池中运行,因为它都是进程内的,而 .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 应用程序,然后从下拉上下文菜单中选择属性,然后在出现窗口窗格时,选择构建选项卡。)

此外,在 IIS 服务器上,我的团队技术主管确保已部署的 .NET Core Web API 应用程序的应用程序池具有以下设置(请记住,它是“非托管代码”,这一点很重要:

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2019-10-30
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多