ASP.NET核心:公共语言运行时检测到一个无效程序



我在ubantu 18.04.3 LTS上托管了asp.net core 2.1 web应用程序。

我收到Common Language Runtime detected an invalid program.错误

错误源为System.Private.CoreLib

堆栈跟踪是

at System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(IRuntimeMethodInfo method) at System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType, Object target) at System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate() at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda) at System.Linq.Expressions.Expression 1.Compile(Boolean preferInterpretation) at System.Linq.Expressions.Expression 1.Compile() at Microsoft.Extensions.Internal.ObjectMethodExecutor.GetExecutor(MethodInfo methodInfo, TypeInfo targetTypeInfo) at Microsoft.Extensions.Internal.ObjectMethodExecutor..ctor(MethodInfo methodInfo, TypeInfo targetTypeInfo, Object[] parameterDefaultValues) at Microsoft.Extensions.Internal.ObjectMethodExecutor.Create(MethodInfo methodInfo, TypeInfo targetTypeInfo, Object[] parameterDefaultValues) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvokerCache.GetCachedResult(ControllerContext controllerContext) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvokerProvider.OnProvidersExecuting(ActionInvokerProviderContext context) at Microsoft.AspNetCore.Mvc.Internal.ActionInvokerFactory.CreateInvoker(ActionContext actionContext) at Microsoft.AspNetCore.Mvc.Internal.MvcAttributeRouteHandler.<>c__DisplayClass12_0.<RouteAsync>b__0(HttpContext c) at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.ResponseCaching.ResponseCachingMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context)

为了您的信息,我已经从Visual Studio Code开发并发布了我的web应用程序,为了发布,我使用了dotnet publish -c Release -o ./publish命令。

就当地环境而言,它运行良好。我得到以上错误只是在主机环境。

请帮助我解决这个问题

感谢

您遇到问题是因为您在Windows机器上构建,因此发布的内容与Linux运行时不兼容。

要解决您的问题,您需要指定您的应用程序可以针对多个运行时,然后使用--runtime标志指定构建项目时要针对的运行时。如果没有此标志,可执行文件仅针对当前平台。

您可以在官方文档中阅读更多关于运行时标识符的信息。

在您的csproj:

<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>

dotnet工具:

dotnet publish -c Release --runtime linux-x64 -o ./publish

相关内容

  • 没有找到相关文章

最新更新