Bonjour,

j'ai un petit problème avec une page de redirection...

L'idée est que j'ai un logiciel C# qui doit accéder à une page (ASP) d'un site directement en étant loggué.

J'avais donc commencé par faire une page intermédiaire en ASP.NET qui ressemble à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
    protected void Page_Load(object sender, EventArgs e)
    {
        UrlDomaine = "http://" + Request.Url.Host;
 
        Login(Request.QueryString["pseudo"], Request.QueryString["pass"]);
 
        CookieCollection cc = cookieContainer.GetCookies(new Uri(UrlDomaine));
 
        HttpCookie hc;
        foreach (Cookie c in cc)
        {
            hc = new HttpCookie(c.Name, c.Value);
            hc.Expires = c.Expires;
            hc.Domain = UrlDomaine;
 
            Response.Cookies.Add(hc);
        }
 
        /*
         * Ouverture de la page demandée
         */
        string pageDemandee = null;
        switch (Request.QueryString["action"])
        {
						...
            case "recherche":
                {
                    Response.Cookies.Add(new HttpCookie("from", "messenger"));
                    Response.Cookies.Add(new HttpCookie("age", Request.QueryString["age"]));
 
                    pageDemandee = "/search/result.asp";
 
                    break;
                }
            default:
                {
                    pageDemandee = "member.asp";
 
                    break;
                }
        }
 
        Response.Cookies.Add(new HttpCookie("redirect", pageDemandee));
        Response.Redirect(UrlDomaine + "frameset.asp");
    }
 
    private void Login(string p_Pseudo, string p_Pass)
    {
        string URL_Login = UrlDomaine + "login.asp?log=ok";
 
        cookieContainer = new CookieContainer();
 
        HttpWebRequest req_Login = (HttpWebRequest)WebRequest.Create(URL_Login);
        req_Login.CookieContainer = cookieContainer;
        req_Login.Method = "POST";
        req_Login.AllowAutoRedirect = true;
        req_Login.ContentType = "application/x-www-form-urlencoded";
        ASCIIEncoding encoding = new ASCIIEncoding();
        byte[] data = encoding.GetBytes("pseudo=" + p_Pseudo + "&password=" + p_Pass);
        req_Login.ContentLength = data.Length;
 
        Stream stream = req_Login.GetRequestStream();
        stream.Write(data, 0, data.Length);
        stream.Close();
 
        HttpWebResponse rep_Login = (HttpWebResponse)req_Login.GetResponse();
        cookieContainer.Add(rep_Login.Cookies);
    }
}
Tout fonctionnait à merveille si ce n'est que IIS envoit très souvent une erreur comme quoi la mémoire est insuffisante.
J'ai donc décidé d'essayer de faire la même chose en ASP...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
'********************************************************************************
'	Déclaration et initialisation des variables
'********************************************************************************
	Const WinHttpRequest_EnableRedirects = 6
 
	domaine = "http://..."
	urlLogin = domaine & "login.asp?log=ok"
	dataLogin = "pseudo=" & Request.QueryString("pseudo") & "password=" & Request.QueryString("pass")
	urlPage = domaine & "frameset.asp"
 
 
'********************************************************************************
'	Création et exécution du login afin de récupérer le cookie contenant la session
'********************************************************************************
	set winHttpRequest = server.CreateObject("WinHttp.WinHttpRequest.5.1")
 
	winHttpRequest.open "POST", urlLogin, true
	winHttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
	winHttpRequest.Option(WinHttpRequest_EnableRedirects) = false
	winHttpRequest.send dataLogin
	winHttpRequest.waitForResponse 5000      	
 
 
'********************************************************************************
'	Récupération et traitement des cookies
'********************************************************************************
	httpHeaders = winHttpRequest.getAllResponseHeaders()
 
	header = split(httpHeaders, "Set-Cookie: ")
    for cc = 1 to ubound(header)	
        theCookie = left(header(cc), instr(header(cc), "path=/")-2)
		theCookie_Name = left(theCookie, instr(theCookie, "=")-1)
		theCookie_Value = mid(theCookie, instr(theCookie, "=")+1, instr(theCookie, ";")-1 - instr(theCookie, "="))
		%> <br /><br /> 
		header(cc) : <%=header(cc)%> <br />
		theCookie : <%=theCookie%> <br />
		---
		instr(theCookie, "=") : <%=instr(theCookie, "=")%><br />
		instr(theCookie, ";") : <%=instr(theCookie, ";")%><br />
		---
		<li> Name : <%=theCookie_Name%> <br />
		<li> Value : <%=theCookie_Value%> <br /> 
		____________________
		<%
 
		'if instr(theCookie_Name, "ASPSESSIONID") = 0 then
			Response.Cookies(theCookie_Name) = theCookie_Value
		'end if
 
        myCookie = myCookie & " " & theCookie
    next
 
	%> <br /><br /><br />myCookie : <%=myCookie%> <%
 
	'Response.Cookies(" ") = trim(myCookie)
	Response.Cookies(myCookie)
	'Response.AddHeader "Cookie", trim(myCookie)
 
	Response.Redirect("http://.../frameset.asp?redirect=my_messages.asp")
J'ai donc le code ci-dessus qui ne fonctionne pas... Il va bien rechercher le cookie mais je n'arrive pas à les renvoyer dans le Response.Redirect

Quelqu'un peut-il me mettre sur la voie de la solution svp?

Merci d'avance.