我有两个基于.net核心的相同应用程序。
首先是在docker容器上,我有1.0.4版本的.net核心。
其次是在我的虚拟机Ubuntu 16.0.4上,我也有1.0.4版本的.net核心。
问题是当我想在基于docker容器的应用程序上使用Claims时,找不到Claims命名空间,但是在Ubuntu vm上,一切正常。
为什么? 两个应用程序都使用相同的.net核心框架,为什么我在docker容器上找不到Claims命名空间?
这可能听起来很奇怪但是,我有3个解决方案,在第一个解决方案中,声明命名空间可用,但其余部分没有
有csproj文件。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="6.1.1" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Evento.Infrastructure\Evento.Infrastructure.csproj" />
</ItemGroup>
</Project>
第二
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Evento.Core\Evento.Core.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="6.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.1.2" />
<PackageReference Include="NLog.Extensions.Logging " Version="1.0.0-*" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.4.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
</Project>
第三
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
</Project>
答案 0 :(得分:0)
我没有在docker容器上使用.net。但我可以给你一个检查指针。运行虚拟机和docker容器时,很多事情可能会有所不同。
您的VM可能有一个bash_profile,其中包含一些可能在docker上丢失的PATH设置。此外,您的docker容器将仅在您的VM中运行主进程,而其他服务可能正在运行。这可能会也可能不会对您的代码产生影响。