Null reference exception when accessing order store/select server, etc.
Posted: Fri Apr 27, 2018 4:51 pm
We sometimes randomly receive a null reference exception when accessing an order store or select service object via code within a shell package.
It seems like this tends to happen when the client has been idle for a while.
For example, if trying to execute the following code: (note that _spServer is a SelectServer object that was created when the package first loaded, and is passed around)
We sometimes receive this error:
Object reference not set to an instance of an object.
at SoftPro.ClientModel.Proxies.ClientProxy`1.OnHandleFaultException(FaultException exception)
at SoftPro.ClientModel.Proxies.ClientProxy`1.HandleFaultException(FaultException exception)
at SoftPro.Select.Client.Runtime.LicensingServiceClient.AcquireLease(LicensedProduct product)
at SoftPro.Select.Client.Runtime.Licensing.SoftPro.Select.Client.Runtime.ILicensing.Acquire(LicensedProduct product)
at SoftPro.Select.Client.SelectServerObject.AcquireLicense(LicensedProduct product)
at SoftPro.OrderTracking.Client.Orders.OrderStore.SoftPro.OrderTracking.Client.Orders.IOrderStore.get_Orders()
at WorkBenchLibrary.Utilities.SoftProCommands.OpenCanceledOrder(Guid orderId) in C:\TFS\PGPTitle\SoftPro Shell Packages\EditorFactory\WorkBench\Utilities\SoftProCommands
at WorkBenchLibrary.Utilities.SoftProCommands.OpenOrder(OrderIdentifier orderId, Boolean checkIfCanceled) in C:\TFS\PGPTitle\SoftPro Shell Packages\EditorFactory\WorkBench\Utilities\SoftProCommands.cs
and a mid-tier side error
An error occured on the service boundary.Error: Object reference not set to an instance of an object.
Stack Trace:
at SoftPro.Select.Server.Runtime.Licensing.SoftPro.Select.Client.Runtime.ILicensing.Acquire(LicensedProduct product)
at SyncInvokeAcquireLease(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
Claims:
Type=http://schemas.xmlsoap.org/ws/2005/05/i ... laims/hash, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=System.Byte[]
Type=http://schemas.xmlsoap.org/ws/2005/05/i ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... t/identity, Resource=System.IdentityModel.Tokens.SamlNameIdentifierClaimResource
Type=http://schemas.xmlsoap.org/ws/2005/05/i ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=System.IdentityModel.Tokens.SamlNameIdentifierClaimResource
Type=http://schemas.softprocorp.com/claims/sessionidentifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=d4f1f2ba-8dd2-4c65-b7e1-e81452ab9222
Type=http://schemas.softprocorp.com/claims/trusteeidentifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=16eab2cc-ec99-4f45-b8b3-075739766b9c
Type=http://schemas.softprocorp.com/claims/trusteeusername, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=PMCORP\skulbersh
Type=http://schemas.softprocorp.com/claims/t ... emberships, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=7d900037-cad5-485c-9526-4d6d93bfd067,e8ba81d1-8c99-df11-a957-0022fb5d6ef2,75e04731-2fe7-e311-9153-0050569d224b,8acf6cde-11b1-e311-bbd6-0050569d224b,94a15337-3c17-e411-89e8-0050569d27a0,37adf7bf-47f7-df11-a72c-0050569d568a,dfc29e4a-76c4-4fff-85d0-a2dcb8d27d...
Type=http://schemas.softprocorp.com/claims/d ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=00000000-0000-0000-0000-000000000000
Type=http://schemas.softprocorp.com/claims/d ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=00000000-0000-0000-0000-000000000000
Type=http://schemas.softprocorp.com/claims/aiparticipant, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=True
Type=http://schemas.softprocorp.com/claims/a ... ntationkey, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=4bed6907-345f-475d-9394-982af2e01739
Type=http://schemas.softprocorp.com/claims/a ... ntationkey, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=Error
Action=http://schemas.softprocorp.com/select/r ... quireLease, ReplyTo=http://schemas.microsoft.com/2005/12/Se ... /Anonymous, FaultTo=
A similar issue sometimes happens when trying to get the select server object through the IOrder object
However, this only throws the null reference exception with no meaningful stack trace
Exception has been thrown by the target of an invocation.
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, Object[] parameters, CultureInfo culture)
at FieldCodeTracker.PgpFieldCodeTracker.PropertyChangedListener(Object sender, PropertyChangedEventArgs args) in C:\TFS\PGPTitle\SoftPro Shell Packages\Core Package\FieldCodeTracker\FieldCodeTracker.cs
Object reference not set to an instance of an object.
at FieldCodeTracker.Trackers.OrderInstance.OnSettlementDateChanged(Object sender, PropertyChangedEventArgs args) in C:\TFS\PGPTitle\SoftPro Shell Packages\Core Package\FieldCodeTracker\Trackers\OrderInstance.cs
Is there a recommended surefire way to get a fresh copy of the select server, even if the connection to the server has wobbled (NOT been fatally severed)?
It seems like this tends to happen when the client has been idle for a while.
For example, if trying to execute the following code: (note that _spServer is a SelectServer object that was created when the package first loaded, and is passed around)
Code: Select all
var os = _spServer.GetService<IOrderStore>();
Object reference not set to an instance of an object.
at SoftPro.ClientModel.Proxies.ClientProxy`1.OnHandleFaultException(FaultException exception)
at SoftPro.ClientModel.Proxies.ClientProxy`1.HandleFaultException(FaultException exception)
at SoftPro.Select.Client.Runtime.LicensingServiceClient.AcquireLease(LicensedProduct product)
at SoftPro.Select.Client.Runtime.Licensing.SoftPro.Select.Client.Runtime.ILicensing.Acquire(LicensedProduct product)
at SoftPro.Select.Client.SelectServerObject.AcquireLicense(LicensedProduct product)
at SoftPro.OrderTracking.Client.Orders.OrderStore.SoftPro.OrderTracking.Client.Orders.IOrderStore.get_Orders()
at WorkBenchLibrary.Utilities.SoftProCommands.OpenCanceledOrder(Guid orderId) in C:\TFS\PGPTitle\SoftPro Shell Packages\EditorFactory\WorkBench\Utilities\SoftProCommands
at WorkBenchLibrary.Utilities.SoftProCommands.OpenOrder(OrderIdentifier orderId, Boolean checkIfCanceled) in C:\TFS\PGPTitle\SoftPro Shell Packages\EditorFactory\WorkBench\Utilities\SoftProCommands.cs
and a mid-tier side error
An error occured on the service boundary.Error: Object reference not set to an instance of an object.
Stack Trace:
at SoftPro.Select.Server.Runtime.Licensing.SoftPro.Select.Client.Runtime.ILicensing.Acquire(LicensedProduct product)
at SyncInvokeAcquireLease(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
Claims:
Type=http://schemas.xmlsoap.org/ws/2005/05/i ... laims/hash, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=System.Byte[]
Type=http://schemas.xmlsoap.org/ws/2005/05/i ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... t/identity, Resource=System.IdentityModel.Tokens.SamlNameIdentifierClaimResource
Type=http://schemas.xmlsoap.org/ws/2005/05/i ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=System.IdentityModel.Tokens.SamlNameIdentifierClaimResource
Type=http://schemas.softprocorp.com/claims/sessionidentifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=d4f1f2ba-8dd2-4c65-b7e1-e81452ab9222
Type=http://schemas.softprocorp.com/claims/trusteeidentifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=16eab2cc-ec99-4f45-b8b3-075739766b9c
Type=http://schemas.softprocorp.com/claims/trusteeusername, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=PMCORP\skulbersh
Type=http://schemas.softprocorp.com/claims/t ... emberships, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=7d900037-cad5-485c-9526-4d6d93bfd067,e8ba81d1-8c99-df11-a957-0022fb5d6ef2,75e04731-2fe7-e311-9153-0050569d224b,8acf6cde-11b1-e311-bbd6-0050569d224b,94a15337-3c17-e411-89e8-0050569d27a0,37adf7bf-47f7-df11-a72c-0050569d568a,dfc29e4a-76c4-4fff-85d0-a2dcb8d27d...
Type=http://schemas.softprocorp.com/claims/d ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=00000000-0000-0000-0000-000000000000
Type=http://schemas.softprocorp.com/claims/d ... identifier, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=00000000-0000-0000-0000-000000000000
Type=http://schemas.softprocorp.com/claims/aiparticipant, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=True
Type=http://schemas.softprocorp.com/claims/a ... ntationkey, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=4bed6907-345f-475d-9394-982af2e01739
Type=http://schemas.softprocorp.com/claims/a ... ntationkey, Right=http://schemas.xmlsoap.org/ws/2005/05/i ... ssproperty, Resource=Error
Action=http://schemas.softprocorp.com/select/r ... quireLease, ReplyTo=http://schemas.microsoft.com/2005/12/Se ... /Anonymous, FaultTo=
A similar issue sometimes happens when trying to get the select server object through the IOrder object
Code: Select all
var ss = order.GetService<SelectServer>();
Exception has been thrown by the target of an invocation.
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, Object[] parameters, CultureInfo culture)
at FieldCodeTracker.PgpFieldCodeTracker.PropertyChangedListener(Object sender, PropertyChangedEventArgs args) in C:\TFS\PGPTitle\SoftPro Shell Packages\Core Package\FieldCodeTracker\FieldCodeTracker.cs
Object reference not set to an instance of an object.
at FieldCodeTracker.Trackers.OrderInstance.OnSettlementDateChanged(Object sender, PropertyChangedEventArgs args) in C:\TFS\PGPTitle\SoftPro Shell Packages\Core Package\FieldCodeTracker\Trackers\OrderInstance.cs
Is there a recommended surefire way to get a fresh copy of the select server, even if the connection to the server has wobbled (NOT been fatally severed)?