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

VB.NET Discussion :

Comment faire un icalendar dynamique à partir dune page ASHX


Sujet :

VB.NET

  1. #1
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut Comment faire un icalendar dynamique à partir dune page ASHX
    Bonjour,

    Je développe une appli de gestion d’événement. J'ai un agenda que j'exporte au format vcf dans outlook. Mais le problème, c'est que ça ne se met pas à jour automatiquement.
    J'essaie donc de faire un lien pour pouvoir l'intégrer en tant que calendrier Internet (Icalendar)
    Mais ça ne marche pas...
    Voici mon fichier PlanningAutoSynchroPerso.ashx
    Code vb.net : 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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    Imports System.Web
    Imports System.Web.Services
    Imports System.Web.SessionState
    Imports System.IO
     
    Public Class PlanningAutoSynchroPerso
        Implements System.Web.IHttpHandler, IReadOnlySessionState
     
        Private Sub EcrireEvt(ByVal MaLigne As DataRowView, ByRef writer As StreamWriter)
     
            Dim strcal, strcaldesc As String
            strcaldesc = ""
            strcal = ""
            Select Case MaLigne("Type").ToString
                Case "Atelier"
                    strcal = "Atelier " & MaLigne("Societe_Agenda").ToString & vbNewLine
                    strcal &= MaLigne("Descriptif")
                    strcaldesc = MaLigne("Objet").ToString
                Case "Rendez-vous"
                    If MaLigne("Objet").ToString <> "" Then
                        strcaldesc = MaLigne("Objet").ToString
                    End If
                    strcal = MaLigne("Descriptif") & " de " & MaLigne("Societe_Agenda").ToString
     
                Case Else
                    If Not IsDBNull(MaLigne("Descriptif")) Then
                        strcal = MaLigne("Descriptif")
                    End If
            End Select
     
            'HEADER
            writer.WriteLine("BEGIN:VEVENT")
     
            'BODY
            writer.WriteLine("DTSTART:" & CDate(MaLigne("HeureDebut").ToString).ToUniversalTime.ToString("yyyyMMdd\THHmmss\Z"))
            writer.WriteLine("DTEND:" & CDate(MaLigne("HeureFin").ToString).ToUniversalTime.ToString("yyyyMMdd\THHmmss\Z"))
            writer.WriteLine("LOCATION:" & MaLigne("Salle").ToString)
            writer.WriteLine("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" & strcaldesc)
            writer.WriteLine("SUMMARY:" & strcal)
     
            'FOOTER
            writer.WriteLine("PRIORITY:3")
            writer.WriteLine("END:VEVENT")
     
        End Sub
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
            Try
     
                Dim IdContact As Guid = New Guid(HelperURL.GetParam("IdContact"))
     
                Dim ds As DataSet = ContactClass.GetPlanning(IdContact)
                If ds IsNot Nothing AndAlso ds.Tables.Count > 0 AndAlso ds.Tables(0).Rows.Count > 0 Then
     
                    'INITIALIZATION
                    Dim mStream As New MemoryStream()
                    Dim writer As New StreamWriter(mStream)
                    writer.AutoFlush = True
     
                    'Ecriture des Evt
                    writer.WriteLine("BEGIN:VCALENDAR")
                    writer.WriteLine("PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//FR")
     
                    Dim dtv As DataView = ds.Tables(0).DefaultView
                    For Each l As DataRowView In dtv
                        EcrireEvt(l, writer)
                    Next
                    writer.WriteLine("END:VCALENDAR")
     
                    context.Response.Clear() 'clears the current output content from the buffer
                    context.Response.ContentEncoding = System.Text.Encoding.UTF8
                    context.Response.AppendHeader("Content-Disposition", "filename=Agenda_KO2016" & IdContact.ToString() & ".ics")
                    context.Response.ContentType = "text/calendar"
                    context.Response.BinaryWrite(mStream.ToArray())
                    context.Response.End()
                Else
                    context.Response.Write("Pas de calendrier")
                End If
            Catch ex As Exception
                context.Response.Write("Pas de calendrier")
            End Try
        End Sub
     
     
        ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class

    L'appel se fait par MonURL/Planning/PlanningAutoSynchroPerso.ashx?Idcontact=GuidEnString

    Mon appli exigent d'être connecté, je n'ai pas oublié de mettre ma page en exception dans le Web.config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <location path="~/Planning/PlanningAutoSynchroPerso.ashx">
        <system.web>
          <authorization>
            <allow users="*" />
          </authorization>
        </system.web>
      </location>
    Est-ce que je mis prend comme il faut? Ou est mon erreur?
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

  2. #2
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Bon je suis une buse... Le problème était bien au niveau du web.config....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <location path="Planning/PlanningAutoSynchroPerso.ashx">
        <system.web>
          <authorization>
            <allow users="*" />
          </authorization>
        </system.web>
      </location>
    le tilda sur web.config, ça marche pas très bien..
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/03/2010, 08h16
  2. Réponses: 2
    Dernier message: 23/10/2009, 21h32
  3. Comment faire un alert dynamique sur ma page web
    Par nazimb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2007, 21h52
  4. Comment faire un lien "dynamique" de tables??
    Par fram069 dans le forum Access
    Réponses: 1
    Dernier message: 10/04/2006, 13h43
  5. Comment faire une connexion dynamique à une base avec ADO?
    Par Borisam dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2006, 14h22

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