I have some C# code that communicated with Datascope and worked as recently as 2023. It doesn't seem

Options
Shashidhar
Shashidhar LSEG
edited July 16 in DSS
  1. client confirmed saying they already have .NET version 4.8 installed

2. Client provided the below logs

C:\Izzy\DatascopeRestAPI\dss_rest_net_sdk_tutorials_code\Tutorial 2\Learning\restful_api_core_gui_basics\bin\Debug>restful_api_core_gui_basics.exe

Unhandled Exception: DataScope.Select.Api.TransportException: An error occurred while sending the request. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.

   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)

   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)

   --- End of inner exception stack trace ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.HttpOData.Http.HttpClientAdapter.<HandleEventNotifications>d__11.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\Http\HttpClientAdapter.cs:line 117

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.HttpOData.Http.HttpClientCallLogDecorator.<LogCall>d__11.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\Http\HttpClientCallLogDecorator.cs:line 119

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.HttpOData.Http.HttpClientExceptionDecorator.<HandleExceptions>d__11.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\Http\HttpClientExceptionDecorator.cs:line 171

   --- End of inner exception stack trace ---

   at DataScope.Select.Api.Core.HttpOData.Http.HttpClientExceptionDecorator.<HandleExceptions>d__11.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\Http\HttpClientExceptionDecorator.cs:line 181

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at DataScope.Select.Api.Core.HttpOData.Http.HttpClientExceptionDecorator.<HandleExceptions>d__11.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\Http\HttpClientExceptionDecorator.cs:line 202

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.HttpOData.Http.HttpAsyncJobStrategy.<InvokeAsync>d__0.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\Http\HttpAsyncJobStrategy.cs:line 37

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.HttpOData.HttpODataClient.<InternalExecuteAsync>d__87.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\HttpODataClient.cs:line 556

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.HttpOData.HttpODataClient.<ExecuteAsync>d__7d`1.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\HttpOData\HttpODataClient.cs:line 527

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.OperationsBaseForHttpODataClient.<CallOnHttpODataClient>d__10b`1.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\OperationsBaseForHttpODataClient.cs:line 0

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.Helper.<ReAuthenticateIfNecessaryAsync>d__6`1.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\Helper.cs:line 0

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Api.Core.OperationsBaseForHttpODataClient.<ExecuteAsync>d__a0`1.MoveNext() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\OperationsBaseForHttpODataClient.cs:line 0

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at DataScope.Select.Core.RestApi.Threading.Tasks.AsyncHelper.RunSync[TResult](Func`1 func) in d:\BuildAgent\work\b004378e131924fe\src\Core\Threading\Tasks\AsyncHelper.cs:line 25

   at DataScope.Select.Api.Core.OperationsBase.InvokeSynchronously[T](Func`1 action) in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\OperationsBase.cs:line 405

   at DataScope.Select.Api.Core.OperationsBase.Execute[T](DssDataServiceContext context, Uri uri, String httpMethod, Boolean isSingle, OperationParameter[] parameters, String queryOptions) in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\OperationsBase.cs:line 246

   at DataScope.Select.Api.DssDataServiceContext.<>c__DisplayClass12`1.<Execute>b__11() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\DssDataServiceContext.cs:line 313

   at DataScope.Select.Api.Core.Helper.ReAuthenticateIfNecessary[T](IDssDataServiceContext context, Func`1 method) in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\Helper.cs:line 44

   at DataScope.Select.Api.DssDataServiceContext.Execute[TElement](Uri requestUri, String httpMethod, Boolean singleResult, OperationParameter[] operationParameters, String queryOptions) in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\DssDataServiceContext.cs:line 311

   at DataScope.Select.Api.Authentication.AuthenticationContext.RequestToken(Credentials credentials) in d:\BuildAgent\work\b004378e131924fe\src\Api\RestApi.v2.Client\AuthenticationClientApi.generated.cs:line 129

   at DataScope.Select.Api.DssDataServiceContext.Authenticate(Uri serviceRoot, NetworkCredential networkCredential) in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\DssDataServiceContext.cs:line 168

   at DataScope.Select.Api.DssDataServiceContext.get_SessionToken() in d:\BuildAgent\work\b004378e131924fe\src\ServiceLayer\ServiceLayer.Client\Core\DssDataServiceContext.cs:line 135

   at DssRestfulApiTutorials.DssClient.get_SessionToken() in C:\Izzy\DatascopeRestAPI\dss_rest_net_sdk_tutorials_code\Tutorial 2\Learning\restful_api_core_gui_basics\DssClient.cs:line 35

   at DssRestfulApiTutorials.Program.Main() in C:\Izzy\DatascopeRestAPI\dss_rest_net_sdk_tutorials_code\Tutorial 2\Learning\restful_api_core_gui_basics\Program.cs:line 47

C:\Izzy\DatascopeRestAPI\dss_rest_net_sdk_tutorials_code\Tutorial 2\Learning\restful_api_core_gui_basics\bin\Debug>

3) We recommeded the client refer to the link below to download the latest version of the C# code. Kindly review the latest dss_rest_net_desk_tutorials_code under the following reference:

DSS C# Example Application

.Net SDK Tutorials Code

https://developers.lseg.com/en/api-catalog/datascope-select/datascope-select-rest-api/download

4) Client confirms as below :

I have a standard Microsoft Windows 11 Pro.

There are no missing dependencies as the software compiled fine.

I have the standard Windows Security and did try it with and without the firewall.

I’ve also tried this on two other computers that we have.

So, I’m really not sure how to proceed.

Just to be on the safe side, I did ask if we can test with another temporary DSS UserId. But you told me that this was unnecessary.

From the error log for DSS_REST_NET_SDK_TUTORIALS (Tutorial 2) I see that the code collapses right here.

It can not login and establish a session token.

Can you please give some specific recommendations about how to continue ?

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Shashidhar

    Thank you for reaching out to us.

    This question looks similar to this discussion.

    The client needs to recompile and rebuild the application with .NET Framework 4.8.

    image.png

    The client can also add the following code and then rebuild the application.

            static void Main()
    {
    //-----------------------------------------------------------------
    //Connect and authenticate to the DSS server:
    //-----------------------------------------------------------------
    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    DssClient dssClient = new DssClient();
  • Jirapongse
    Jirapongse ✭✭✭✭✭

    You can also enable tracing in the .NET Framework by adding the following configurations into the app.config file.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
    </startup>
    <system.diagnostics>
    <trace autoflush="true"/>
    <sources>
    <source name="System.Net" maxdatasize="1024">
    <listeners>
    <add name="TraceFile"/>
    </listeners>
    </source>
    <source name="System.Net.Sockets" maxdatasize="1024">
    <listeners>
    <add name="TraceFile"/>
    </listeners>
    </source>
    </sources>
    <sharedListeners>
    <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
    </sharedListeners>
    <switches>
    <add name="System.Net" value="Verbose"/>
    <add name="System.Net.Sockets" value="Verbose"/>
    </switches>
    </system.diagnostics>
    <runtime>
    ....

    The trace.log file will be created in the current working directory.