Si vous utilisez fiddler2 (http://www.fiddler2.com/fiddler2/), vous pouvez voir exactement quels en-têtes sont envoyés à IE, ce qui peut vous aider dans le débogage.
Peut-être pouvez-vous publier les en-têtes qui en résultent ici? Je doute que l'ajout du Content-Type et du Content-Disposition avant la redirection ait un effet, puisque le navigateur voit l'en-tête de redirection et envoie une requête http complètement nouvelle à l'URL redirigée, ce qui sera complètement différent ensemble d'en-têtes.
Cependant, vous pouvez essayer un Server.Transfer qui est une redirection côté serveur, quelque chose comme ce qui suit:
Response.Clear(); //In case your .aspx page has already written some html content
Response.AddHeader("Content-Type", "application/octet-stream");
string disp = String.Format("attachment; filename={0}", fileName); // fileName = file.exe
Response.AddHeader("Content-Disposition", disp);
Server.Transfer(@"http://www.example.com/file.exe?id=12345");
Ou bien, utilisez Response.BinaryWrite:
Response.Clear(); //In case your .aspx page has already written some html content
byte[] exeContent = ... //read the content of the .exe into a byte[]
Response.AddHeader("Content-Type", "application/octet-stream");
string disp = String.Format("attachment; filename={0}", fileName); // fileName = file.exe
Response.AddHeader("Content-Disposition", disp);
Response.BinaryWrite(exeContent);
Malheureusement, les fichiers sont hébergés sur un autre serveur dans le même domaine. – Bullines