generer du HTML a partir de la page aspx

generer du HTML a partir de la page aspx - ASP - Programmation

Marsh Posté le 04-08-2009 à 18:57:58    

Bien voila, cette fois-ci, mon probleme et beaucoup plus serieux et tres embetant. Premierement excusez mon manque d'accent (qwerty).
J'utilise un CMS mais je le modifis pour que des pages (statiques) soit generees au format html et je les envois sur un autre serveur.
Lors qu'une nouvelle page est cree, ma technique est d'aller la recuperer via requette http , exemple :  

Code :
  1. WebRequest webRequest = WebRequest.Create(http://localhost:1325/test8.aspx);
  2. WebResponse webResponse = webRequest.GetResponse();
  3. Stream streamObject = webResponse.GetResponseStream();


 
Ensuite, je sauvegarde les donnees du "Stream" dans le fichier test8.html. Ce fichier est a premiere vue correcte (donnees, liens css ...) mais mon probleme et qu'il manque dans ce fichier du contenu qui est present lorsque j'accede a test8.aspx avec Mozilla.
 
Par exemple un lien Webresources.axd?.... qui contient le javascript necessaire au menu deroulant.
 
Voici un exemple de difference :
1) source du fichier ASPX :

Code :
  1. <td style="white-space:nowrap;"><a class="Menu1_1" href="/test4.aspx">test4</a></td>


2) source du fichier HTML

Code :
  1. <td nowrap="nowrap"><a href="/test4.html">test4</a></td>


 
On remarque un style plus riche et meme une class qui y est rattache.
Donc pourquoi Mozilla obtient plus de contenu que moi avec un "WebRequest" ?
 
J'espere que vous m'avez compris, n'hesitez a demander des details parce que la je commence a secher.
 
Merci a vous et bonne soiree.
 
PS : je programme en Csharp

Reply

Marsh Posté le 04-08-2009 à 18:57:58   

Reply

Marsh Posté le 05-08-2009 à 15:23:55    

Ok, il y a deux solutions a ce probleme :
 
1)utiliser un objet httpwebrequest et y ajouter des elements headers comme cela :  
 

Code :
  1. HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(uriObject); webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 GTB5 (.NET CLR 3.5.30729)";
  2. webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  3. HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();


 
2) override the method render in the template.aspc.cs file like this :
 

Code :
  1. protected override void Render(HtmlTextWriter writer)
  2. {
  3.    using(System.IO.MemoryStream msOur = new System.IO.MemoryStream())
  4.   {
  5.        using(System.IO.StreamWriter swOur = new System.IO.StreamWriter(msOur))
  6.       {
  7.             HtmlTextWriter ourWriter = new HtmlTextWriter(swOur);
  8.             base.Render(ourWriter); ourWriter.Flush(); msOur.Position = 0;
  9.             using(System.IO.StreamReader oReader = new System.IO.StreamReader(msOur))
  10.            {
  11.                 string sTxt = oReader.ReadToEnd(); StreamWriter objReader = null;
  12.                 try {
  13.                        objReader = new StreamWriter(@"C:\mypage.html" ); objReader.Write(sTxt);
  14.                 } finally {
  15.                         objReader.Close(); } Response.Write(sTxt);
  16.                 }
  17.             }
  18.      }


 
J'ai choisis la premiere solution car elel s'applique a une partie de mon site aue j'ai deja beaucoup modifie et il serait compliquer d'appliquer la deuxieme.


Message édité par discmat le 05-08-2009 à 15:24:31
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed