Obtenir des expressions du FOLKLORE d'exception sur https appel
Mon code https demande. C'est mon code
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UploadUrl);
request.Method = "POST";
request.KeepAlive = false;
request.Credentials = new NetworkCredential(userid, testpwd);
postData = "<root></root>";
request.ContentType = "application/x-www-form-urlencoded";
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);
request.ContentLength = postDataBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postDataBytes, 0, postDataBytes.Length);
requestStream.Close();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
var result = responseReader.ReadToEnd();
responseReader.Close();
Console.WriteLine(result);
}
Ce code a été l'exécution de bonne mais tout à coup, jetant exception suivante
System.Net.WebException
Le message d'exception est:
La connexion sous-jacente a été fermée: Une erreur inattendue s'est produite lors de l'envoi.Trace de la pile:
Système.Net.HttpWebRequest.GetRequestStream(TransportContext& le contexte)
au Système.Net.HttpWebRequest.GetRequestStream() à
CustomerProcessor.De la livraison.Livrer(Chaîne de contenu, Int32
productCategory, identifiant de Chaîne, Chaîne de xsltFile)L'Exception a un intérieur d'exception: Une Exception s'est produite:
Système.IO.IOException Le message d'exception est: a Reçu une inattendue
EOF ou 0 octets dans le flux de transport.Trace de la pile: au Système.Net.FixedSizeReader.ReadPacket(Byte[]
tampon, Int32 décalage, Int32 nombre) à
Système.Net.De sécurité.SslState.StartReadFrame(Byte[] buffer, Int32
readBytes, AsyncProtocolRequest asyncRequest) à
Système.Net.De sécurité.SslState.StartReceiveBlob(Byte[] buffer,
AsyncProtocolRequest asyncRequest) à
Système.Net.De sécurité.SslState.CheckCompletionBeforeNextReceive(ProtocolToken
message, AsyncProtocolRequest asyncRequest) à
Système.Net.De sécurité.SslState.StartSendBlob(Byte[] entrants, Int32
le comte, AsyncProtocolRequest asyncRequest) à
Système.Net.De sécurité.SslState.ForceAuthentication(Boolean receiveFirst,
Byte[] buffer, AsyncProtocolRequest asyncRequest) à
Système.Net.De sécurité.SslState.ProcessAuthentication(LazyAsyncResult
lazyResult) à
Système.Net.TlsStream.CallProcessAuthentication(état de l'Objet) à
Système.Le filetage.ExecutionContext.runTryCode(Objet userData) à
Système.Moment de l'exécution.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode
code, CleanupCode backoutCode, Objet userData) à
Système.Le filetage.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback rappel, l'état de l'Objet) à
Système.Le filetage.ExecutionContext.Exécuter(ExecutionContext
executionContext, ContextCallback rappel, l'état de l'Objet) à
Système.Net.TlsStream.ProcessAuthentication(LazyAsyncResult suite)
au Système.Net.TlsStream.Write(Byte[] buffer, Int32 offset, taille Int32)
au Système.Net.PooledStream.Write(Byte[] buffer, Int32 décalage, Int32
taille) au Système.Net.ConnectStream.WriteHeaders(Boolean async)
Est-il une chance de voir ce qui pourrait être la cause de ce problème?
OriginalL'auteur Amzath | 2011-03-21
Vous devez vous connecter pour publier un commentaire.
L'ajout de cet appel avant que la requête qui m'a aidé:
Donc, si vous utilisez https essayez de changer la valeur par défaut SecurityProtocol.
OriginalL'auteur Petr Dokoupil
Une autre cause potentielle de ce - si vous êtes en cours d'exécution sur Windows Server 2003, il prend uniquement en charge de SSL 2.0, SSL 3.0, TLS 1.0. Tous ces protocoles sont maintenant recommandé d'être désactivé à la lumière des récents exploits qui ont été trouvés pour ces protocoles, vous pouvez trouver que étroitement un serveur sécurisé, tout ne peut pas être connecté à partir de windows server 2003 alors qu'il sera bien de votre machine de développement. Il n'y a rien que vous pouvez faire au sujet de cette situation autre que de se poser la destination de l'administrateur du serveur de l'équipe pour permettre TLS1.0, ou la mise à niveau de votre serveur de production.
Source de la prise en charge de SSL sur Win2k3Server: http://blogs.msdn.com/b/kaushal/archive/2011/10/02/support-for-ssl-tls-protocols-on-windows.aspx
- Vous déjà acheté de la bière?
OriginalL'auteur elRobbo
Mon vécu est juste que elRobbo décrit. - Je mettre à niveau le serveur Win2k3 à Win2k8.
est uniquement pris en charge .net 4.5, ce qui n'est pas pris en charge dans Win2k3...
OriginalL'auteur Lei Shi
Cela a fonctionné pour moi:
J'ai mis cette ligne avant la création de la requête web.
OriginalL'auteur Cosmin
Je n'ai aucune idée de la raison (surtout depuis qu'il va à l'encontre de docs que j'ai vu sur le sujet), mais j'ai trouvé qu'en quittant la mission de
RequestLength
. Plutôt, il suffit d'écrire à la demande du flux sans réglage de l'en-tête.Cela a aussi l'avantage d':
est à mon avis plus simple, ainsi que d'avoir plus d'avantages dans les cas où les données sont plus grandes et écrit, pièce par pièce, ou vient de quelque chose comme un
XMLWriter
qui peuvent être mis en place pour l'écrire directement dans le flux en question.OriginalL'auteur Jon Hanna