我试图让Identity Server 4在Docker容器中运行ASP.NET Core并继续获得以下异常
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native.OpenSsl': The specified module Could not be found. (Exception from HRESULT: 0x8007007E) at Interop.Crypto.GetMaxmdsize() at Interop.Crypto..cctor() --- End of inner exception stack trace --- at Interop.Crypto.GetRandomBytes(Byte[] buf,Int32 num) at System.Security.Cryptography.RNGCryptoServiceProvider.GetBytes(Byte[] data) at IdentityModel.CryptoRandom.CreateUniqueId(Int32 length) at Microsoft.Extensions.DependencyInjection.IdentityServerBuilderExtensions.SetTemporarySigningCredential(IIdentityServerBuilder builder) at Microsoft.Extensions.DependencyInjection.IdentityServerServiceCollectionExtensions.AddDeveloperIdentityServer(IServiceCollection services) at Identity.Startup.ConfigureServices(IServiceCollection services) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target,Object[] arguments,Signature sig,Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object[] parameters,Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,CultureInfo culture) at Microsoft.AspNetCore.Hosting.Internal.ConfigureServicesBuilder.Invoke(Object instance,IServiceCollection exportServices) at Microsoft.AspNetCore.Hosting.Internal.WebHost.Ensureapplicationservices() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at Identity.Program.Main(String[] args)
DockerFile
FROM microsoft/dotnet:latest workdir /app ENV ASPNETCORE_URLS http://*:80 EXPOSE 80 ENTRYPOINT ["dotnet","Identity.dll"] copY . /app
Project.json
{ "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.1","type": "platform" },"Microsoft.AspNetCore.Mvc": "1.0.1","Microsoft.AspNetCore.Routing": "1.0.1","Microsoft.AspNetCore.Server.IISIntegration": "1.0.0","Microsoft.AspNetCore.Server.Kestrel": "1.0.1","Microsoft.Extensions.Configuration.Environmentvariables": "1.0.0","Microsoft.Extensions.Configuration.FileExtensions": "1.0.0","Microsoft.Extensions.Configuration.Json": "1.0.0","Microsoft.Extensions.Configuration.CommandLine": "1.0.0","Microsoft.Extensions.Logging": "1.0.0","Microsoft.Extensions.Logging.Console": "1.0.0","Microsoft.Extensions.Logging.Debug": "1.0.0","Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0","Microsoft.AspNetCore.Diagnostics": "1.0.0","Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final","CassandraCSharpDriver": "3.1.0-beta1","Microsoft.VisualStudio.Web.browserLink.Loader": "14.0.0","Microsoft.AspNetCore.StaticFiles": "1.0.0","Microsoft.AspNetCore.Cors": "1.1.0-preview1-final","Core.Data.Cassandra": "0.1.0","IdentityServer4": "1.0.0-rc2" },"tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" },"frameworks": { "netcoreapp1.0": { "imports": [ "dotnet5.6","portable-net45+win8" ] } },"buildOptions": { "emitEntryPoint": true,"preserveCompilationContext": true },"runtimeOptions": { "configProperties": { "System.GC.Server": true } },"publishOptions": { "include": [ "wwwroot","**/*.cshtml","appsettings.json","web.config","Dockerfile.debug","Dockerfile","docker-compose.debug.yml","docker-compose.yml" ] },"scripts": { "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] },"tooling": { "defaultNamespace": "Identity" } }
解决方法
我相信这是因为你混合了1.0.x,1.1.0包和1.0.0运行时.在任何地方都使用1.0.x或1.1.0(并相应地定位netcoreapp1.0或netcoreapp1.1).关于github的相关问题:
https://github.com/dotnet/corefx/issues/12517
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。