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 :
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 //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"); } }
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
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(); } }
Merci d'avance pour votre aide.
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>
Silberfab
Partager