Register Alert Endpoint not working


#1

I’m trying to register my alert endpoint via FlightXML2 service but I keep getting the following error message:

Error Response
“{System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.TlsStream.CallProcessAuthentication(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)}. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.”

Here is a copy of my code which I’m using to send the request:

            var client = new FlightXML2SoapClient();
            client.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["FlightAwareUsername"];
            client.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["FlightXML2APIKey"];
            var apiDomain = ConfigurationManager.AppSettings["apiDomain"];

            var response = client.RegisterAlertEndpoint($"{apiDomain}/FlightAware/Alert", "json/post");

            rtnVal = response == 1;

#2

Can you please confirm that when making the request that you are using TLS version 1.2? This can usually be forced by setting

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Before instantiating the client object.