首页 > 解决方案 > 生产服务器上的 NullReferenceException

问题描述

我创建了一个版本为 2.1 的 .NET Core WebAPI。现在,在外部测试服务器上的所有测试成功完成后,我将软件转移到了生产服务器。服务器的配置相同,都使用 Ubuntu 18.04.03。只有框架的版本不同,在生产服务器上运行 2.1.15,在测试服务器上运行 2.1.12。

以下代码在本地开发机器和外部测试服务器上工作,但在外部生产服务器上崩溃。

        [HttpPost]
        [Authorize]
        public IActionResult Post([FromBody] PetItem pet)
        {
            var user = User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name);
            int userID = Convert.ToInt16(user.Value);

            pet.CreatorID= userID; //System.NullReferenceException

            var returnPet = _petDataHandler.createNewPet(pet);

            return Created(returnPet.PetID.ToString(), returnPet;
        }

日志:

fail: Microsoft.AspNetCore.Server.Kestrel[13]
       Connection id "0HLTOVB6C8I6O", Request id "0HLTOVB6C8I6O:00000003": An unhandled exception was thrown by the application.
 System.NullReferenceException: Object reference not set to an instance of an object.
    at server.Pets.Controllers.PetController.Post(PetItem pet) in D:\...\server\Pet\Controllers\PetController.cs:line 75
    at lambda_method(Closure , Object , Object[] )
    at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
    at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
    at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
    at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
    at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.Invoke(HttpContext context)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)


我的错误是什么,知道任何人都可以解决这个问题。

标签: c#asp.net-coreasp.net-web-api

解决方案


推荐阅读