2017-10-30 1 views
0

두 개의 Azure로드 균형 조정 서버에있을 때 asp.net 응용 프로그램에서 null 참조 오류가 발생합니다. 하나를 끄면 오류가 사라집니다. 호출 스택을 볼 때 null 참조가 던져진 실제 이유는 없습니다. 두 서버 모두에서 원격 디버깅 세션을 설정해도 null 참조 오류가 발생하는 이유에 대한 논리적 인 이유가 없습니다. 내 직감은 하나의 서버에서 잘 작동하지만 2가있을 때로드 균형 조정 문제가되어야하며로드 균형 조정을 포함하도록 애플리케이션 설정을 변경해야한다고 말합니다. 이것은 응용 프로그램 설정까지 뭔가를 변경해야한다는 일반적인 징후입니까? 그렇다면 무엇을 바꾸어야합니까? 내 응용 프로그램이 클러스터에서 작동하도록하기 위해 실행할 수있는 다른 진단 도구는 무엇입니까?Asp.net로드 균형 조정 서버 오류

System.InvalidOperationException: Nullable object must have a value. 
    at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 
    at POS.Domain.Manager.GetCommodityList(Int32 locationID, DateTime delDate, Int32 ogID, VMUserProfile profile) in c:\Workspace\Ordering Portals\DanielBranch\POS.Domain\BLL\Manager.cs:line 1123 
    at POS.UI.Controllers.OrderingController.GetCommodityList(Int32 locationID, String delDate, VMUserProfile userprofile) in c:\Workspace\Ordering Portals\DanielBranch\POS.UI\Controllers\OrderingController.cs:line 733 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 
    at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) 
    at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) 
    at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) 
    at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) 
    at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Manager.cs

+0

_ _가 "진짜 왜 null 참조가 슬로우 된 이유가없는 호출 스택을 볼 때"? – CodeCaster

+0

stacktrace와 stacktrace가 코드에서 가리키는 곳의 스크린 샷 –

답변

0

이 사이트는 사용자가 다른 서버로 전송되는 경우, 그 정보가되지 않도록 할 하나 개의 서버에 정보를 저장하는 것을 의미 상태 것 같다. 예를 들어, 진행중인 세션을 사용하는 경우 해당 프로세스는 하나의 서버에만 존재합니다.

Azure App Services에는 사용자가 매번 동일한 서버로 다시 보낼 수있는 기능이 있습니다.

단순히 ARR Affinity 설정을 으로 설정합니다. 응용 프로그램 설정. 이렇게하면 각 요청마다 사용자가 동일한 서버로 다시 전송됩니다. 아마도하지만 질문에 포함 -

Source

enter image description here

+0

이것이 Azure의 가상 머신에서 실행되고 있다면 어떻게 될까요? –

+0

어떻게로드 밸런싱합니까? App 게이트웨이,로드 밸런서, 트래픽 관리자? –

+0

Azure Load Balancer를 사용하는 VM –