Рукопожатие не удалось из-за неожиданного формата пакета - PullRequest
0 голосов
/ 12 января 2020

Короче говоря, я получил приложение. net, которое было перемещено с одного сервера windows 2012 на новый сервер настройки windows 2016. Приложение использует API для входа в веб-приложение на сервере linux (используя остальные API). Перемещение приложения было приятным и плавным, и единственное отличие состоит в том, что я знаю о ОС windows сервера.

Но когда я пытаюсь использовать приложение, запущенное на сервере windows, оно не может получить доступ к остальным API. я получаю следующую трассировку стека

[IOException: The handshake failed due to an unexpected packet format.]
   System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) +8357260
   System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) +186
   System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) +345
   System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) +203
   System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) +769
   System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) +355
   System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) +20
   System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) +82
   System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) +1105
   System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) +60
   System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size) +122
   System.Net.ConnectStream.WriteHeaders(Boolean async) +463

[WebException: The underlying connection was closed: An unexpected error occurred on a send.]
   System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) +662
   System.Net.HttpWebRequest.GetRequestStream() +21
   modules_templates_application_login_standalone.up2u_signIn() in C:\inetpub\wwwroot\hc1_15\modules\templates\application\up2u_login\standalone.ascx.vb:500
   modules_templates_application_login_standalone.LoginButton_Click(Object sender, EventArgs e) in C:\inetpub\wwwroot\hc1_15\modules\templates\application\up2u_login\standalone.ascx.vb:109
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11760128
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +150
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5028

Все работало отлично до тех пор, пока сервер не переместился, и единственное отличие, которое я вижу, это сертификат на компьютере windows, который теперь генерируется с помощью Certify The Web и до того, как это был самозаверяющий сертификат, я не совсем уверен, как это работает. Я попробовал остальные API с Talented API Tester, и он прекрасно работает. я могу пропинговать сервер linux с сервера windows и наоборот, но не могу получить доступ к API, доступному из приложения на сервере windows, у кого-нибудь есть предположения, почему?

...