PB Classic > .NET Webservice calling external SOAP webservice using WS Proxy. Object reference not set to an instance of an object
Hi,
I hope someone can help with this one.
This problem only happens on a production server not on my development machine. The production has a C:\ but uses another drive for websites, may need other permissions set if PB is looking for access to a folder I don't know about.
I have a Powerbuilder 12.1 project which deploys a .NET Webservice.
This application connects to completely separate SOAP webservice.
On the production server I get the following error :
System.Web.Services.Protocols.SoapException: Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object. at c__storageservices.getsharedaccesssignatureurl(PBString accesstoken, PBString containername, PBString filename) in c:\Development\xxxxxxxxxxxxxxxxxxxx\pb2cstempout\xxxxxxxxxxxxxxxxxxxx\storageservices.cs:line 0 at c__n_mares.alantest() in c:\Development\xxxxxxxxxxxxxxxxxxxx\pb2cstempout\xxxxxxxxxxxxxxxxxxxx\n_mares.alantest(S):line 14 at cns_xxxxxxxxxxxxxxxxxxxx.PBWS__n_mares.alantest() in c:\Development\xxxxxxxxxxxxxxxxxxxx\pb2cstempout\xxxxxxxxxxxxxxxxxxxx\xxxxxxxxxxxxxxxxxxxx.asmx.cs:line 3954 --- End of inner exception stack trace --- at Sybase.PowerBuilder.Web.WebServices.PBWebService.HandleException(Exception ex) at cns_xxxxxxxxxxxxxxxxxxxx.PBWS__n_mares.alantest() in c:\Development\xxxxxxxxxxxxxxxxxxxx\pb2cstempout\xxxxxxxxxxxxxxxxxxxx\xxxxxxxxxxxxxxxxxxxx.asmx.cs:line 3964 |
xxxxxxxxxxxxxxxxxxxx = project name folder
c:\Development\xxxxxxxxxxxxxxxxxxxx\pb2cstempout is a folder present on my machine but does not exist on the production server.
In fact the access to C: would be limited on production with everything running from another drive.
Could there be a permissions issue that I can update?
Call to Webservice
Long ll_conn_result, ll_log
String ls_access_token, ls_filename, ls_url
storageservices l_storageservices // Declare proxy
SoapConnection conn // Define SoapConnection - if it gives out that soapconnection is an invalid type something went wrong with the pbx import
conn = create SoapConnection // Instantiated connection
ll_log = conn.SetSoapLogFile ("C:\mySoapLog.log") // Set trace file to record soap interchange data,
// if string is "", disables the feature
ls_access_token = 'test123'
ls_filename = 'test.pdf'
ll_conn_result = Conn.CreateInstance(l_storageservices,"storageservices")
ls_url = l_storageservices.getsharedaccesssignatureurl(ls_access_token, 'mareforms', ls_filename)
// Destroy Conn
destroy conn
return ls_url
|
Any help would be appreciated, even if its a suggestion of where I can find a better error or steps to get to the bottom of it as I am at a loss.
Thanks,
Alan
The ll_conn_result returns 0. I did a test build which I ran on the production server (I added a note to my sample script above to show how its currently stepping through the function).
I can access the webservice WSDL using a browser and SOAPUI without issue.
I'm using the .net engine. In addition to the storageservices.dll there are also 2 other dlls as part of the project bin folder which are: named project.dll and project_ws.dll.
The dlls you mention are present in the GAC and sybase program files folder under dotnet and packagestoload folders. pbwsdl12 and pbwsdlclient12 are present in the shared folder. The permissions on this folder has permissions for the IIS user.
As per my previous reply the dlls you mention (Sybase.Powerbuilder.WebService.Runtime.dll, Sybase.PowerBuilder.WebService.RuntimeRemoteLoader.dll, Sybase.PowerBuilder.WebService.WSDL.dll, Sybase.PowerBuilder.WebService.WSDLRemoteLoader.dll) are present in the GAC32 and sybase program files folder under dotnet and packagestoload folders. pbwsdl12 and pbwsdlclient12 are present in the shared folder. The permissions on this folder has permissions for the IIS user.
Thanks for your help.