/ / https demande échoue avec .Net Framework 2.0 mais fonctionne avec .Net 4.0 - asp.net, .net-4.0, proxy, .net-2.0, httprequest

La requête https échoue avec .Net Framework 2.0 mais fonctionne avec .Net 4.0 - asp.net, .net-4.0, proxy, .net-2.0, httprequest

Mon application asp.net 2.0 envoie une requête https interne à une autre URL pour obtenir un cookie valide dans la réponse.

Quand je teste cela dans le .Net 2.0 framework, aucun cookie n'est renvoyé, mais avec .Net 4, cela fonctionne. Il n’ya pas d’exception dans la réponse, mais j’ai le sentiment que c’est lié au proxy de la société et à https. Y a-t-il des suggestions en plus de la mise à niveau vers .Net 4.0 (tâche énorme)?

        string ticketissuerURL = "https://Securesite";
ServicePointManager.Expect100Continue = false;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ticketissuerURL);

// Set some reasonable limits on resources used by this request
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
request.KeepAlive = true;
request.AllowAutoRedirect = false;
request.PreAuthenticate = true;

// Pass in current credentials
request.UserAgent = "Mozilla/4.0 (Windows)";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Réponses:

1 pour la réponse № 1

J'ai vérifié ton code pour ça site comme source de cookie. Les cookies ont été configurés de manière appropriée pour les deux cadres dans la réponse de la propriété. Vous pouvez créer un conteneur de cookies pour les rendre visibles en réponse. Propreté des cookies.

request.CookieContainer = new CookieContainer();

Alors, on dirait que le problème est quelque chose d'autre, peut-êtrele proxy ou l'implémentation ont changé dans .net 4.0 (et il ajoute des en-têtes supplémentaires qui le font fonctionner avec .net 4.0 pour votre service). Je pense que c’est une bonne idée d’inspecter les demandes réelles. Je vous suggère de télécharger outil de violoneux et activez le décryptage https et comparez ensuite les demandes des deux frameworks.

N'oubliez pas d'ajouter cette ligne au début de votre code

WebProxy proxy = new WebProxy("localhost:8888");

laisser le violoniste inspecter vos demandes.