2017-10-30 24 views
0

2つのAzure負荷分散サーバー上にasp.netアプリケーションでNULL参照エラーが発生します。 1つをオフにすると、エラーが消えます。呼び出しスタックを見ると、null参照がスローされた実際の理由はありません。私は両方のサーバー上でリモートデバッグセッションをセットアップしていて、なぜヌル参照エラーが発生するのかという論理的な理由はありません。私の腸は、1つのサーバー上で正常に動作すると言いますが、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

ユーザーが別のサーバーに送信された場合、その情報が存在しないようにあなたは、1台のサーバー上の情報を格納していることを意味し、あなたのサイトがステートフルであると思われます。たとえば、インプロセスセッションを使用している場合、そのセッションは1つのサーバー上にのみ存在します。

Azure App Servicesには、毎回同じサーバーにユーザーを戻す機能があります。

ARR Affinityの設定をに設定してください。アプリケーション設定。これにより、ユーザーは各要求ごとに同じサーバーに確実に戻されます。

Source

enter image description here

+0

これがAzureの仮想マシンで実行されている場合はどうなりますか? –

+0

どのように負荷分散していますか?アプリケーションゲートウェイ、ロードバランサ、トラフィックマネージャ –

+0

Azureロードバランサを使用しているVM –

関連する問題