Monitorare file system

mercoledì 01 febbraio 2006 - 17.08

Trinità Profilo | Junior Member

Ho l'esigenza da un sito internet asp.net di monitorare le creazioni di file in una cartella di questo file. I file vengono upladati in questa cartella da un programma di terze parti.

avrei trovato
Dim objWatcher As New System.IO.FileSystemWatcher

objWatcher.Path = Server.MapPath("Images")
objWatcher.IncludeSubdirectories = True
'objWatcher.NotifyFilter = NotifyFilters.CreationTime
'objWatcher.Filter = "*.jpg"
AddHandler objWatcher.Created, AddressOf OnChanged

e pensavo di mette questo pezzo di codice nel global asax in sub application start

poi Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

'-----------------------------------------------------------------------------------------
Dim cnx As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("conn_test"))
'-----------------------------------------------------------------------------------------

Dim sql As String
sql = "INSERT into Tabella1 (campo) VALUES ('" & Date.Now.ToLongTimeString & "')"

Dim cmd As New SqlCommand(sql, cnx)
'---------------------------------------------------------------------------

cnx.Open()
cmd.ExecuteNonQuery()
cnx.Close()

End Sub

solo che sembra non funzionare. Non sò nemmeno se può farlo considerando la natura disconnessa del sito.
Come posso risolvere ?

Brainkiller Profilo | Guru

>solo che sembra non funzionare. Non sò nemmeno se può farlo considerando
> la natura disconnessa del sito.
>Come posso risolvere ?

Infatti, non mi risulta che il FileSystemWatacher possa funzionare in una applicazione Web in questo modo.
Come puoi risolvere ?
Costruire una applicazione Windows che faccia uso del FileSystemWatcher e comunichi con l'applicazione ASP.NET via Database. Credo sia l'unica.
Ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Trinità Profilo | Junior Member

dato che è possibile fare uno scheduler pensavo si potesse fare una cosa del genere. Forse un polling, ma allora non mi server quella classe, potrei fare con il fileinfo e basta...

Trinità Profilo | Junior Member

allora facendo

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

Dim objWatcher As New System.IO.FileSystemWatcher

Application.Add("objWatcher", objWatcher)

objWatcher.Path = "C:\Inetpub\wwwroot\net_prov\Images"
objWatcher.IncludeSubdirectories = True

'objWatcher.Filter = "*.jpg"
objWatcher.EnableRaisingEvents = True

AddHandler objWatcher.Created, AddressOf OnChanged

End Sub

e

Dim str As String = String.Empty
str = e.FullPath

Dim dir_str As String
dir_str = str
Dim fs As New FileStream(dir_str, FileMode.OpenOrCreate, FileAccess.Read)
Dim MyData(fs.Length) As Byte
fs.Read(MyData, 0, fs.Length)


Dim sql As String
sql = "INSERT into Tabella1 (campo, campo_img) VALUES (@srt, @img)"
Dim cmd As New SqlCommand(sql, cnx)

cmd.Parameters.Add("@srt", SqlDbType.VarChar).Value = str
cmd.Parameters.Add("@img", SqlDbType.Image).Value = MyData

'---------------------------------------------------------------------------

cnx.Open()
cmd.ExecuteNonQuery()
cnx.Close()

funziona bene
compilo, lancio la index.aspx e quando copio i file nella directory stabilita vado a scrivere nel db
tutto funziona bene (con file piccoli sotto i 20 kb)

quando vado a vedere una pagina che estrae i dati dal campo blob il processo si ferma ... perchè ? dopo aver visitato quella pagina il FileSystemWatcher non funziona più


Brainkiller Profilo | Guru

>quando vado a vedere una pagina che estrae i dati dal campo blob
>il processo si ferma ... perchè ? dopo aver visitato quella
> pagina il FileSystemWatcher non funziona più

Come ti ho detto, secndo me il suo uso non è adatto ad una applicazione Web.
Ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5