IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Comment intégre t on un IHttpHandler dans une page ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Comment intégre t on un IHttpHandler dans une page ?
    Bonjour tout le monde.

    J'ai regadé pas mal de tuto mais je n'ai pas trouvé de solution à mon problème.

    Alors voilà :
    - j'ai une classe qui fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MyPPHandler : PaypalHandler
    - dans mon Web.Config j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <add path="PaypalPerso.axd" verb="*" type="MyPPHandler"  validate="True"/>
    (en suivant les indication des Tutos)
    - dana ma page j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:HyperLink ID="HyperLink1" runat="server" ImageUrl="~/App_Themes/order.png" NavigateUrl="~/PaypalPerso.axd"></asp:HyperLink>
    Lorsque je navigue sur le site je voix bien mon image sur le lien mais quand je clique il ne se passe rien et je comprends pas pourquoi.

    Pouvez vous m'aider ?

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Déjà, tu pourrais ajouter la totalité de l'espace de nommage pour le type: type="MyPPHandler".

    Sinon, difficile à dire... Tu ne donne pas beaucoup de détails. On ne sait pas ce que tu a mis dans ta classe. Tu as peut-être mis un "Response.End()" quelque part

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide.
    La classe que j'ai utilisé ce n'est pas moi qui l'ai fait, elle vient d'un tuto sur Paypal. Le voici : http://blog.inetux.net/post/Solution...ur-ASPNET.aspx

    J'ai fait tout comme il a dit sauf qu'il ne dit pas comment on s'en sert, donc, dans la partie HTML je ne sais pas quoi mettre, j'y suis allé à l'impro.

    Mais, au delà de ça, j'ai essayé de comprendre et j'ai pris un autre tuto pour voir et ça marche pas mieux.
    http://humann.developpez.com/httphandler/
    Là, je suis censé avoir une image mais rien du tout, toujours une croix rouge.

    Du coup, je ne comprend pas comment ça marche. Enfin, j'ai compris principe de la bête, mais pas la manière de le mettre en place.

    Alors j'ai même essayé de faire encore plus simple et j'ai fait ça :
    dans une page ASPX tout simple, que j'ai appelé test.aspx, j'ai mis une classe dans le CodeBehind comme ça :
    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
     
    Imports System
    Imports System.Web
     
    Partial Class test
        Inherits System.Web.UI.Page
     
     
        Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
     
        End Sub
    End Class
     
    Public Class TestHandler
        Implements IHttpHandler
     
        Public Sub New()
            Outils.Logage("coucou new")
        End Sub
     
        Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
            Get
                Return True
            End Get
        End Property
     
        Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
            Outils.Logage("coucou")
            context.Response.Write("Hello World")
        End Sub
    End Class
    la procédure Outils.logage es tun truc perso qiu log dans un fichier texte la chaine passée en paramettre. ça me sert à tester des trucs.

    Dans la partie HTML de la page j'ai rien mis.
    Et dans le web.config j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <add path="hello.aspx" verb="*" type="TestHandler, TEST" />
    Mais quand j'appelle cette page virtuelle j'ai une erreur. Il ne trouve pas la page.

    Bilan, je comprends pas coment marche ce truc qui pourtant à l'air super bien foutu.

    Et donc j'ai besoins d'un coup de main car je n'arrive pas à metre en place ma solution de paiement avec Paypal.

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    dans une page ASPX tout simple, que j'ai appelé test.aspx, j'ai mis une classe dans le CodeBehind comme ça
    Un handler ne se met pas dans une page aspx. Dans VS c'est une classe qui hérite de IHttpHandler.

    Tu veux comprendre le HttpHandler?

    Je suis pas super super calé mais ce que je peux en dire: c'est une classe de "bas-niveau" qui va intercepter les requêtes Http et exécuter un bout de code. Ce code sera exécuté avant de descendre à la page. Ce n'est pas une page, il n'y a pas de rendu. On ne peut pas y ajouter de controles.

    Pour les faire fonctionner elle sont mises en route au démarrage de l'application.
    A ce moment, IIS associe les classes à appeler en fonction de l'URL.
    Pour pouvoir enregistrer correctement ces manipulateurs on peut les déclarer explicitement dans le web.config ou le programmer dans le global.asax avec les fonctionnalités de routage du Framework 3.5. On peut aussi le configurer dans IIS je crois.

    Tu peux regarder ceci: http://msdn.microsoft.com/en-us/libr...ing.route.aspx et ceci: http://msdn.microsoft.com/en-us/libr...tphandler.aspx

    Sinon as-tu ajouté la totalité du namespace de ton handler dans ton web config?

    Exemple de code:
    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
    using System;
    using System.Web;
     
    namespace VideoCrossing.Web.Resources.Classes
    {
        public class IISHandler1 : IHttpHandler
        {
            /// <summary>
            /// You will need to configure this handler in the web.config file of your 
            /// web and register it with IIS before being able to use it. For more information
            /// see the following link: http://go.microsoft.com/?linkid=8101007
            /// </summary>
            #region IHttpHandler Members
     
            public bool IsReusable
            {
                // Return false in case your Managed Handler cannot be reused for another request.
                // Usually this would be false in case you have some state information preserved per request.
                get { return true; }
            }
     
            public void ProcessRequest(HttpContext context)
            {
                context.Response.Write("Hello Wolrd!");
                context.Response.End();
            }
     
            #endregion
        }
    }
    Et le web config
    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
    <?xml version="1.0"?>
     
    <configuration>
      <connectionStrings>
     
      </connectionStrings>
     
      <appSettings>
     
      </appSettings>
     
      <system.web>
        <httpHandlers>
          <add verb="*" path="*" type="VideoCrossing.Web.Resources.Classes.IISHandler1, VideoCrossing.Web" />
        </httpHandlers>
        <httpModules>
     
        </httpModules>
        <compilation debug="true" targetFramework="4.0" />
     
      </system.web>
     
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Meri pour toutes ces explications.
    ça devient de plus en plus clair. Maintenant il ne me manque que les clés de la super caisse qui va emballer les gonzesses par paquet de 12.

    En gros, j'ai repris ton code, que j'ai traduit en VB au passage. J'ai changé le NameSpace et ça donne ça :
    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
     
    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Web
     
     
    Namespace Testamoi
        Public Class TestHand
            Implements IHttpHandler
     
            Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
                Get
                    Return True
                End Get
            End Property
     
            Public Sub New()
     
            End Sub
     
            Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
                Outils.Logage("coucou")
                context.Response.Write("hello world")
                context.Response.End()
     
            End Sub
        End Class
    End Namespace
    Et dans mon web.config j'a mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <add path="Image.aspx" verb="*" type="Testamoi.TestHand, Testamoi" />
    Donc là, j'ai bon ?

    Et maintenant, je fais quoi ?
    Parce que en fait, je crois que mon souci il est vraiment là. Qu'est ce que je fais avec tout ça ?

    J'ai essayé de taper dans mon navigateur un truc qui fait comme ça :
    http://monsite/image.aspx et là il me dit qu'il trouve pas la page.

    Vois tu où se situe mon problème ?
    Encore merci pour ton aide.

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Quand tu exécutes en mode Debug avec un point d'arrêt sur "Outils.Logage("coucou")" est-ce que tu passes dessus? Quelle version de IIS (Windows) tu as?
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Comment afficher la charge du serveur dans une page web
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/01/2008, 16h08
  2. comment faire pour éviter les scroller dans une page quelque soit la résolution
    Par ghou67 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/11/2007, 09h15
  3. [HTML] Comment faire apparaitre du code HTML dans une page ?
    Par straitch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 23/10/2007, 16h45
  4. comment faire aparaitre un module joomla dans une page statique
    Par Nadjia.ccce dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 31/05/2007, 19h13
  5. [ImageMagick] Comment mettre plus qu'un graphique dans une page ?
    Par 12_darte_12 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 29/06/2006, 20h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo