2009-07-26 6 views
3

J'utilise VSTS 2008 + C# + .Net 3.5 pour développer ASP.Net. Je veux vider tous les en-têtes de réponse renvoyés au client pour un fichier aspx spécifique. Des idées comment faire cela facilement?comment vider les en-têtes de réponse dans ASP.Net

Je sais comment utiliser la collection Response.Headers, mais ma confusion est où énumérer pour obtenir l'en-tête de réponse précis? Par exemple, si j'énumère dans Page_Load, tous les en-têtes de réponse ne peuvent pas être énumérés, mais si j'énumère après Response.Close, une exception sera levée.

Un conseil?

EDIT1: Rencontre avec l'exception suivante lors de l'utilisation OnPreRender dans VSTS 2008 mode débogage (par exemple en appuyant sur F5 pour déboguer)

{ "Cette opération nécessite IIS intégré mode pipeline."}

protected override void OnPreRender(EventArgs e) 
     { 
      base.OnPreRender(e); 
      using (StreamWriter writer = new StreamWriter("dump123.txt", true)) 
      { 
       writer.WriteLine(DateTime.UtcNow + " Response headers"); 
       foreach (string item in HttpContext.Current.Response.Headers.Keys) 
       { 
        writer.WriteLine(item + " : " + HttpContext.Current.Response.Headers[item]); 
       } 
      } 

     } 

merci à l'avance, George

Répondre

3

Qu'en est-il de OnPreRender ?? C'est juste avant que la page ne soit rendue, et après tout, le traitement de la publication a eu lieu. Tout devrait être en place à ce moment-là.

Marc

+0

J'ai rencontré une exception non prise en charge. J'ai posté mon code dans edit 1 section de ma question originale, des idées ce qui ne va pas? – George2

+0

Le message d'erreur signifie-t-il que je dois déployer dans IIS? J'ai essayé le même code fonctionne dans IIS. S'il vous plaît, aidez à confirmer. – George2

+1

Si c'est une application ASP.NET comme vous le dites, c'est ** IS ** hébergé dans IIS! Est-il hébergé sur IIS7 ?? Dans ce cas, vous devez vous assurer que votre répertoire virtuel utilise le "mode ASP.NET classique" (au moins dans mon expérience) –

0

[Ce peut-être vieux pour la question initiale, mais en ajoutant cette réponse au profit de newbees qui pourraient atterrir ici]

modifier les propriétés de votre projet Web pour utiliser l'IIS local pour le débogage comme suit:

  1. Parcourir les propriétés du projet (clic droit sur le nœud de projet dans explorateur de solutions -> propriétés ou avec nœud de projet sélectionné, appuyez sur ALT + ENTRER)
  2. Sélectionnez l'onglet
  3. Dans la section serveurs « Build », sélectionnez le bouton radio « Utilisation locale du serveur IIS » Configuration d'un répertoire virtuel dans votre IIS local et le point à cette URL dans les paramètres ici

A tutoriel détaillé sur l'installation peut être trouvé HERE

Maintenant, lorsque vous appuyez sur F5, IIS local serait utilisé pour le débogage et vous ne recevriez pas l'exception plate-forme non pris en charge/se plaindre du mode pipeline intégré requis.

Questions connexes