まあ、私は気が狂ってしまうと思って、似たようなものを追いかけて6時間過ごしました. 私の場合、他の 5 つのサーバーと同様に、シングル サインオンの実装に DotNetOpenAuth を使用していました。しかし、この新しいサーバーは 99% の確率で嘔吐します。
DotNetOpenAuth.Messaging.ProtocolException: Error occurred while sending a direct message or getting the response. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> 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._SslStream.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
--- End of inner exception stack trace ---
at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
at DotNetOpenAuth.Yadis.Yadis.Request(IDirectWebRequestHandler requestHandler, Uri uri, Boolean requireSsl, String[] acceptTypes)
at DotNetOpenAuth.Yadis.Yadis.Discover(IDirectWebRequestHandler requestHandler, UriIdentifier uri, Boolean requireSsl)
at DotNetOpenAuth.OpenId.UriDiscoveryService.Discover(Identifier identifier, IDirectWebRequestHandler requestHandler, Boolean& abortDiscoveryChain)
at DotNetOpenAuth.OpenId.IdentifierDiscoveryServices.Discover(Identifier identifier)
at DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create(Identifier userSuppliedIdentifier, OpenIdRelyingParty relyingParty, Realm realm, Uri returnToUrl, Boolean createNewAssociationsAsNeeded)
私の正気を本当に疑うために、
- Web ブラウザーで SSL エンドポイントにアクセスすると、問題なく動作しました
- Fiddler のキャプチャをオンにすると機能し、オフにすると機能しなくなりました
- 実際には、約 1% の確率で単独で機能しました
- コンソール アプリで同じエンドポイントにを使用する
HttpWebRequest
と機能しましたが、DotNetOpenAuth に切り替えると (多かれ少なかれ同じことをしているように見えます)、ほとんど機能しませんでした
確認できるすべての項目を確認した後、ネットワーク アダプターのプロパティ (私の場合は、Rackspace Cloud 上の Citrix PV イーサネット アダプター) に移動し、[構成] をクリックして [詳細] に移動し、[ IPv4 チェックサム オフロード] を無効にしました。その後、すぐに機能し始めました。
IPv4 チェックサム オフロードが何をするのかわかりませんが、この仮想マシンでは確実に動作しませんでした。これが他の誰かに役立つことを願っています!