这是我之前提出的问题的延续。
我们使用以下技术开发了.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位版本目录路径:
因此,我在Visual Studio 2019中启动了该应用程序。 另外,在.NET Core Web Api Web应用程序部分的属性中,我确保选择了x86设置值: 在VS中强制x86转到“属性”>“构建并将平台目标从任何CPU更改为x86”
还有调试部分,我有:
此外,在Visual Studio 2019企业中--->“工具”(在主菜单中) 我们取消了“将IIS Express的64位版本用于网站和项目”
应用程序的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”丢失错误吗? 我需要对设置/配置进行其他修改吗?
答案 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应用程序上单击鼠标右键,然后从下拉上下文菜单中选择属性,然后在显示窗口窗格时,选择``构建''选项卡。)
此外,在IIS服务器上,我的团队技术负责人确保已部署的.NET Core Web API应用程序的应用程序池具有以下设置(重要的是要记住,它是“非托管代码”: