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:
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:
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:
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