2017-03-16 127 views
1

サーバーにデータをポストしていますが、アプリケーションが例外をスローしています。 コードは次のとおりです。System.Net.WebException:基になる接続が閉じられました:送信時に予期しないエラーが発生しました

 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 

     Dim bytes As Byte() = Encoding.UTF8.GetBytes(xml) 
     Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
     request.Method = "POST" 
     request.ContentLength = bytes.Length 
     request.ContentType = "text/xml" 
     Using requestStream As Stream = request.GetRequestStream() 
      requestStream.Write(bytes, 0, bytes.Length) 
     End Using 

ここに例外スタックトレースがあります。

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Received an unexpected EOF or 0 bytes from the transport stream. 
    at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) 
    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.runTryCode(Object userData) 
    at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) 
    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) 
    --- End of inner exception stack trace --- 
    at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 
    at System.Net.HttpWebRequest.GetRequestStream() 

回答/ s hereでコードを更新しましたが、役に立たないです。また、プロキシサーバーが切断されていることを確認しました。

答えて

1

POSTになっていたサーバーが、セキュリティプロトコルTLS 1.1以上の要求を受け入れていることがわかりました。アプリケーションは.NET 3.5で実行されており、SSLおよびTLS 1.0プロトコルのみがサポートされています。解決方法は、アプリケーションを.NET 4.5にアップグレードし、TLS 1.1以上を使用してHTTPサービスに要求を送信することです。

関連する問題