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

Silverlight Discussion :

Handler capture image webcam


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut Handler capture image webcam
    Bonjour à tous,

    Je suis désespéré, j'ai une application des plus simples qui, après sélection d'une source vidéo, permet de capturer des screenshot de la webcam. J'appel un generic handler pour sauvegarder mon fichier à la racine de mon site dans un répertoire "captures". En local avec VS2010 aucun souci tout fonctionne à merveille.

    Mais quand je publie mon site sur IIS, rien ne se passe et l'image capturée n'est pas enregistrée.(J'ai pensé à vérifier les droits sur le dossier).

    Je suis en .Net 4.0 et voi mon 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
     
    //Convert in jpeg data
                    byte[] _data = WriteableBitmapToJpeg(e.Result);
     
                    //Enregistrempent sur le disque
                    WebClient wc = new WebClient();
                    wc.OpenWriteCompleted += new OpenWriteCompletedEventHandler(wc_OpenWriteCompleted);
                    Uri u = new Uri(Application.Current.Host.Source, "../SaveCapture.ashx?filename=" + name);
                    MessageBox.Show("Uri : " + u.ToString());
                    wc.OpenWriteAsync(u, null, _data); 
     
    ...
     
    private void wc_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
            {
                if (e.Error == null)
                {
                    byte[] fileContent = e.UserState as byte[];
                    Stream outputStream = e.Result;
                    outputStream.Write(fileContent, 0, fileContent.Length);
                    outputStream.Close();
                }
                else
                {
                    MessageBox.Show("Erreur d'enregistrement de la photo");
                }
            }
    Et le handler :

    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
     
    public void ProcessRequest(HttpContext context)
            {
                HttpRequest request = context.Request;
                HttpResponse response = context.Response;
                HttpServerUtility server = context.Server;
     
                string fileName = context.Request.Params["filename"];
                if (!string.IsNullOrEmpty(fileName))
                {
                    using (Stream inputStream = request.InputStream)
                    {
                        string folder = Path.GetFullPath(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Captures"));
     
                        //folder = server.MapPath("~") + "\\Captures";
     
                        if (!System.IO.Directory.Exists("Captures"))
                            System.IO.Directory.CreateDirectory(folder);
     
                        using (FileStream fs = new FileStream(folder + @"\" + fileName, FileMode.OpenOrCreate))
                        {
                            byte[] fileContent = new byte[inputStream.Length];
                            inputStream.Read(fileContent, 0, fileContent.Length);
                            fs.Write(fileContent, 0, fileContent.Length);
                            fs.Flush();
                        }
                    }
                    response.Clear();
                    response.End();
                }
            }
    J'ai une petite idée en me disant qu'il manque quelquechose dans mon web.config mais je ne trouve pas quoi (pour l'instant il n'y a rien de spécial).

    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
     
    <configuration>
        <connectionStrings>
            <add name="CaptureDatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\CaptureDatabase.mdf;Integrated Security=True;User Instance=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>
        <system.web>
            <compilation debug="true" targetFramework="4.0" />
        </system.web>
     
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="LargeBuffer">
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </binding>
                </basicHttpBinding>
            </bindings>
            <behaviors>
                <serviceBehaviors>
                    <behavior name="">
                        <serviceMetadata httpGetEnabled="true" />
                        <serviceDebug includeExceptionDetailInFaults="true" />
                    </behavior>
                </serviceBehaviors>
            </behaviors>
            <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
        </system.serviceModel>
    </configuration>
    Merci d'avance pour votre aide.
    Silberfab

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    Commence par regarder avec Fiddler si tes données sont bien envoyées comme ça on pourra écarter le coté Silverlight

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    J'avoue ne m'être jamais servi de Fiddler mais je l'ai installé et essayé. Je sais pas trop quoi poster comme résultat mais déjà je vois que le code retour est un code 500

    Merci pour cette réponse si rapide

    [Maj] Très bien je viens de voir aussi que c'est 'access to path denied' je pensais pourtant avoir mis comme il faut les droits sur le dossier...

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    c'est un grand classique

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

Discussions similaires

  1. [AC-2010] Capture image webcam
    Par renard700 dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/12/2019, 08h39
  2. [Débutant] Capture image webcam
    Par janyoura dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/07/2013, 12h30
  3. Capturer image webcam + code QR
    Par hugo7 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/05/2011, 08h10
  4. Capturer des images webcam
    Par mine87 dans le forum Flex
    Réponses: 2
    Dernier message: 10/12/2009, 10h10
  5. Capturer une image WebCam?
    Par gui38 dans le forum Flex
    Réponses: 2
    Dernier message: 22/08/2007, 16h28

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