I think I must be installing or configuring something incorrectly, but I'm not sure what. On two different servers groups, I have installed the Service Based Architecture components and calls to https://myserver/GPService/Tenants(DefaultTenant)/Companies(MyCompany)/Utility/Ping return with a success. However, whenever I call any method to retrieve actual data (using the URLs provided by the Discovery pages, for example https://myserver/GPService/Tenants(DefaultTenant)/Companies(MyCompany)/Dynamics/Inventory/Items), I get something similar to the following in the GP Dexterity Service instance log:
12:31:15.915 | [*Error*]::Request Exception (pipeline - unexpected) :: System.NullReferenceException: Object reference not set to an instance of an object.
at si_inst_object_typeset(PROCESS* cur_process, UInt16 cmd, ATSI* atsi1, ADDR* addr1, ATSI* atsi2, ADDR* addr2)
at script_run_with_args(SCRIPT_TYPE_TAG , Int16 , Int16 , UInt32 , Void** )
at DtwVSToolsScripts.Invoke(Int16 script_type, Int16 script_id, Int16 form_id, Argument[] argArray)
at AppDispatch.InvokeScript(Int16 scriptType, String scriptName, String formName, Argument[] arguments)
at Microsoft.Dexterity.Bridge.AppController.Invoke(Script script, Argument[] args, Int32 options)
at Microsoft.Dexterity.Applications.DynamicsDictionary.ServiceGetItemListProcedure.Invoke(Field`1& ItemList)
at Microsoft.Dexterity.Applications.DynamicsDictionary.ServiceGetItemListProcedure.Invoke(IRequestParser parser, IResponseBuilder builder)
at Microsoft.Dynamics.GP.Svc.DexterityProcess.DexInterop.ScriptExecutionHandler.ExecuteForegroundScripts(ExecutionContext context)
at Microsoft.Dynamics.GP.Svc.DexterityProcess.DexInterop.Steps.ForegroundStep.ExecuteInternal(ExecutionContext context)
at Microsoft.Dynamics.GP.Svc.DexterityProcess.DexInterop.ExecutionPipeline.Execute(ExecutionContext context)
12:31:16.025 | [*Error*]::***** PROCESS IS TERMINATING -- UNEXPECTED EXCEPTION CAUGHT OR DIRTY STATE DETECTED *****
Just for complete disclosure, in both cases I have configured one server to be the host for the GPService and the other to actually run all of the instances. From what I can tell, that's a non-factor, though, because the calls are clearly being routed to the correct machine (otherwise, the error wouldn't be logged where I found it).