Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Any problems with writing the information into a file - Multi-users perform writing the same file at the same time ????

Reply
Thread Tools

Any problems with writing the information into a file - Multi-users perform writing the same file at the same time ????

 
 
HNguyen
Guest
Posts: n/a
 
      12-10-2004
Hi,

I have a Web application in ASP.NET. My Application allows the users upload
files into the server after checking their user names and passwords. For
each transaction, the Web program will write the information about user
name, filename upload, filesize, date and time of uploading into the log
file. (The name of the log file is constructed by Current Year and Current
Month in my program). Is there any problems with writing into the log file
if there are multi-users access on the same page to upload files ????. My
program works OK with the code below, but I don't know if there is any
problems when multi-users perform writing into the same log file at the same
time ??? Here is a part of my code to open the log file for editing :

'WRITE LO LOG FILE
Dim strFile as string= CurrYear & CurrMonth
Dim LogFile As String = Server.MapPath("LOGS") & "\" & strFile &
".log"

Dim aLogfile As FileInfo = New FileInfo(LogFile)
If aLogfile.Exists Then
Dim objStreamWriter as StreamWriter
objStreamWriter = File.AppendText(LogFile)
Dim strLine as string= CurrYear & CurrMonth & CurrDay &
CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
objStreamWriter.WriteLine(strLine)
objStreamWriter.Close()
Else
Dim objStreamWriter as StreamWriter = File.CreateText(LogFile)
Dim strLine as string= CurrYear & CurrMonth & CurrDay &
CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
objStreamWriter.WriteLine(strLine)
objStreamWriter.Close()
End If

Please give me some advises. Do I need to change anything in my code for it
?. Thanks in advance.


 
Reply With Quote
 
 
 
 
Karl Seguin
Guest
Posts: n/a
 
      12-10-2004
Yes...you can have a file lock condition. You'll need to serialize access
to the code. I think in VB.Net you can wrap the offending code in a
SynchLock statement:
http://msdn.microsoft.com/library/de...tmSyncLock.asp

Also, why reinvent the wheel?
http://logging.apache.org/log4net/

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/


"HNguyen" <> wrote in message
news:%23FU15%...
> Hi,
>
> I have a Web application in ASP.NET. My Application allows the users

upload
> files into the server after checking their user names and passwords. For
> each transaction, the Web program will write the information about user
> name, filename upload, filesize, date and time of uploading into the log
> file. (The name of the log file is constructed by Current Year and Current
> Month in my program). Is there any problems with writing into the log

file
> if there are multi-users access on the same page to upload files ????. My
> program works OK with the code below, but I don't know if there is any
> problems when multi-users perform writing into the same log file at the

same
> time ??? Here is a part of my code to open the log file for editing :
>
> 'WRITE LO LOG FILE
> Dim strFile as string= CurrYear & CurrMonth
> Dim LogFile As String = Server.MapPath("LOGS") & "\" & strFile &
> ".log"
>
> Dim aLogfile As FileInfo = New FileInfo(LogFile)
> If aLogfile.Exists Then
> Dim objStreamWriter as StreamWriter
> objStreamWriter = File.AppendText(LogFile)
> Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> objStreamWriter.WriteLine(strLine)
> objStreamWriter.Close()
> Else
> Dim objStreamWriter as StreamWriter = File.CreateText(LogFile)
> Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> objStreamWriter.WriteLine(strLine)
> objStreamWriter.Close()
> End If
>
> Please give me some advises. Do I need to change anything in my code for

it
> ?. Thanks in advance.
>
>



 
Reply With Quote
 
 
 
 
HNguyen
Guest
Posts: n/a
 
      12-10-2004
Hi Karl,

I've tried to add SyncLock and EndLock. The code looks like this :

If aLogfile.Exists Then

Dim objStreamWriter as StreamWriter
objStreamWriter = File.AppendText(LogFile)
Dim strLine as string= CurrYear & CurrMonth & CurrDay &
CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "

SyncLock objStreamWriter.WriteLine(strLine)
End SyncLock
objStreamWriter.Close()

Else

Dim objStreamWriter as StreamWriter = File.CreateText(LogFile)
Dim strLine as string= CurrYear & CurrMonth & CurrDay &
CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "

SyncLock objStreamWriter.WriteLine(strLine)
End SyncLock
objStreamWriter.Close()

End If

I've got the error like this :

Compilation Error
Description: An error occurred during the compilation of a resource required
to service this request. Please review the following specific error details
and modify your source code appropriately.

Compiler Error Message: BC30491: Expression does not produce a value.

Source Error:


Line 202: Dim strLine as string= CurrYear & CurrMonth & CurrDay &
CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
Line 203:
Line 204: SyncLock objStreamWriter.WriteLine(strLine)
Line 205: End SyncLock
Line 206: objStreamWriter.Close()

Any suggestions ??? Thanks.

====================================

"Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:...
> Yes...you can have a file lock condition. You'll need to serialize

access
> to the code. I think in VB.Net you can wrap the offending code in a
> SynchLock statement:
>

http://msdn.microsoft.com/library/de...tmSyncLock.asp
>
> Also, why reinvent the wheel?
> http://logging.apache.org/log4net/
>
> Karl
>
> --
> MY ASP.Net tutorials
> http://www.openmymind.net/
>
>
> "HNguyen" <> wrote in message
> news:%23FU15%...
> > Hi,
> >
> > I have a Web application in ASP.NET. My Application allows the users

> upload
> > files into the server after checking their user names and passwords.

For
> > each transaction, the Web program will write the information about user
> > name, filename upload, filesize, date and time of uploading into the log
> > file. (The name of the log file is constructed by Current Year and

Current
> > Month in my program). Is there any problems with writing into the log

> file
> > if there are multi-users access on the same page to upload files ????.

My
> > program works OK with the code below, but I don't know if there is any
> > problems when multi-users perform writing into the same log file at the

> same
> > time ??? Here is a part of my code to open the log file for editing

:
> >
> > 'WRITE LO LOG FILE
> > Dim strFile as string= CurrYear & CurrMonth
> > Dim LogFile As String = Server.MapPath("LOGS") & "\" & strFile &
> > ".log"
> >
> > Dim aLogfile As FileInfo = New FileInfo(LogFile)
> > If aLogfile.Exists Then
> > Dim objStreamWriter as StreamWriter
> > objStreamWriter = File.AppendText(LogFile)
> > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> > objStreamWriter.WriteLine(strLine)
> > objStreamWriter.Close()
> > Else
> > Dim objStreamWriter as StreamWriter = File.CreateText(LogFile)
> > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> > objStreamWriter.WriteLine(strLine)
> > objStreamWriter.Close()
> > End If
> >
> > Please give me some advises. Do I need to change anything in my code

for
> it
> > ?. Thanks in advance.
> >
> >

>
>



 
Reply With Quote
 
Karl Seguin
Guest
Posts: n/a
 
      12-10-2004
SynchLock
objStreamWriter.WriteLIne(strLine)
end SynchLock

(don't put them on the same line).

Also, you probabably need to wrap the entire File.AppendText(LogFile) in
there...and you could use some exception handling:

Dim objStreamWriter as StreamWriter
Dim strLine as string= CurrYear & CurrMonth & CurrDay & CurrHour &
CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
SyncLock
try
objStreamWriter = File.AppendText(LogFile)
objStreamWriter.WriteLine(strLine)
finally
if not objStreamWriter is nothing then
objStreamWriter.Close()
end if
end try
End SyncLock


Finally, your code should be refactored...the If and Else have too much
repeated code (ie, the strLine, the WriteLine, the associated exception
handling and locking)...all that causes you is (a) more time to write it (b)
more time to change it (c) more time to fix it (d) more likely to have bugs
(e) more likely to introduce bugs....refactoring is your friend

karl




--
MY ASP.Net tutorials
http://www.openmymind.net/


"HNguyen" <> wrote in message
news:eES$...
> Hi Karl,
>
> I've tried to add SyncLock and EndLock. The code looks like this :
>
> If aLogfile.Exists Then
>
> Dim objStreamWriter as StreamWriter
> objStreamWriter = File.AppendText(LogFile)
> Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
>
> SyncLock objStreamWriter.WriteLine(strLine)
> End SyncLock
> objStreamWriter.Close()
>
> Else
>
> Dim objStreamWriter as StreamWriter = File.CreateText(LogFile)
> Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
>
> SyncLock objStreamWriter.WriteLine(strLine)
> End SyncLock
> objStreamWriter.Close()
>
> End If
>
> I've got the error like this :
>
> Compilation Error
> Description: An error occurred during the compilation of a resource

required
> to service this request. Please review the following specific error

details
> and modify your source code appropriately.
>
> Compiler Error Message: BC30491: Expression does not produce a value.
>
> Source Error:
>
>
> Line 202: Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> Line 203:
> Line 204: SyncLock objStreamWriter.WriteLine(strLine)
> Line 205: End SyncLock
> Line 206: objStreamWriter.Close()
>
> Any suggestions ??? Thanks.
>
> ====================================
>
> "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
> wrote in message news:...
> > Yes...you can have a file lock condition. You'll need to serialize

> access
> > to the code. I think in VB.Net you can wrap the offending code in a
> > SynchLock statement:
> >

>

http://msdn.microsoft.com/library/de...tmSyncLock.asp
> >
> > Also, why reinvent the wheel?
> > http://logging.apache.org/log4net/
> >
> > Karl
> >
> > --
> > MY ASP.Net tutorials
> > http://www.openmymind.net/
> >
> >
> > "HNguyen" <> wrote in message
> > news:%23FU15%...
> > > Hi,
> > >
> > > I have a Web application in ASP.NET. My Application allows the users

> > upload
> > > files into the server after checking their user names and passwords.

> For
> > > each transaction, the Web program will write the information about

user
> > > name, filename upload, filesize, date and time of uploading into the

log
> > > file. (The name of the log file is constructed by Current Year and

> Current
> > > Month in my program). Is there any problems with writing into the log

> > file
> > > if there are multi-users access on the same page to upload files ????.

> My
> > > program works OK with the code below, but I don't know if there is any
> > > problems when multi-users perform writing into the same log file at

the
> > same
> > > time ??? Here is a part of my code to open the log file for

editing
> :
> > >
> > > 'WRITE LO LOG FILE
> > > Dim strFile as string= CurrYear & CurrMonth
> > > Dim LogFile As String = Server.MapPath("LOGS") & "\" & strFile

&
> > > ".log"
> > >
> > > Dim aLogfile As FileInfo = New FileInfo(LogFile)
> > > If aLogfile.Exists Then
> > > Dim objStreamWriter as StreamWriter
> > > objStreamWriter = File.AppendText(LogFile)
> > > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " "

&
> > > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes

"
> > > objStreamWriter.WriteLine(strLine)
> > > objStreamWriter.Close()
> > > Else
> > > Dim objStreamWriter as StreamWriter =

File.CreateText(LogFile)
> > > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " "

&
> > > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes

"
> > > objStreamWriter.WriteLine(strLine)
> > > objStreamWriter.Close()
> > > End If
> > >
> > > Please give me some advises. Do I need to change anything in my code

> for
> > it
> > > ?. Thanks in advance.
> > >
> > >

> >
> >

>
>



 
Reply With Quote
 
HNguyen
Guest
Posts: n/a
 
      12-21-2004
Thank you Kark. I tried it and it worked. Only after SyncLock , I needed to
have the Object name. If not, I got the error.

===============================
"Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:...
> SynchLock
> objStreamWriter.WriteLIne(strLine)
> end SynchLock
>
> (don't put them on the same line).
>
> Also, you probabably need to wrap the entire File.AppendText(LogFile) in
> there...and you could use some exception handling:
>
> Dim objStreamWriter as StreamWriter
> Dim strLine as string= CurrYear & CurrMonth & CurrDay & CurrHour &
> CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> SyncLock
> try
> objStreamWriter = File.AppendText(LogFile)
> objStreamWriter.WriteLine(strLine)
> finally
> if not objStreamWriter is nothing then
> objStreamWriter.Close()
> end if
> end try
> End SyncLock
>
>
> Finally, your code should be refactored...the If and Else have too much
> repeated code (ie, the strLine, the WriteLine, the associated exception
> handling and locking)...all that causes you is (a) more time to write it

(b)
> more time to change it (c) more time to fix it (d) more likely to have

bugs
> (e) more likely to introduce bugs....refactoring is your friend
>
> karl
>
>
>
>
> --
> MY ASP.Net tutorials
> http://www.openmymind.net/
>
>
> "HNguyen" <> wrote in message
> news:eES$...
> > Hi Karl,
> >
> > I've tried to add SyncLock and EndLock. The code looks like this :
> >
> > If aLogfile.Exists Then
> >
> > Dim objStreamWriter as StreamWriter
> > objStreamWriter = File.AppendText(LogFile)
> > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> >
> > SyncLock objStreamWriter.WriteLine(strLine)
> > End SyncLock
> > objStreamWriter.Close()
> >
> > Else
> >
> > Dim objStreamWriter as StreamWriter = File.CreateText(LogFile)
> > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> >
> > SyncLock objStreamWriter.WriteLine(strLine)
> > End SyncLock
> > objStreamWriter.Close()
> >
> > End If
> >
> > I've got the error like this :
> >
> > Compilation Error
> > Description: An error occurred during the compilation of a resource

> required
> > to service this request. Please review the following specific error

> details
> > and modify your source code appropriately.
> >
> > Compiler Error Message: BC30491: Expression does not produce a value.
> >
> > Source Error:
> >
> >
> > Line 202: Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & " " &
> > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & " bytes "
> > Line 203:
> > Line 204: SyncLock objStreamWriter.WriteLine(strLine)
> > Line 205: End SyncLock
> > Line 206: objStreamWriter.Close()
> >
> > Any suggestions ??? Thanks.
> >
> > ====================================
> >
> > "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
> > wrote in message news:...
> > > Yes...you can have a file lock condition. You'll need to serialize

> > access
> > > to the code. I think in VB.Net you can wrap the offending code in a
> > > SynchLock statement:
> > >

> >

>

http://msdn.microsoft.com/library/de...tmSyncLock.asp
> > >
> > > Also, why reinvent the wheel?
> > > http://logging.apache.org/log4net/
> > >
> > > Karl
> > >
> > > --
> > > MY ASP.Net tutorials
> > > http://www.openmymind.net/
> > >
> > >
> > > "HNguyen" <> wrote in message
> > > news:%23FU15%...
> > > > Hi,
> > > >
> > > > I have a Web application in ASP.NET. My Application allows the

users
> > > upload
> > > > files into the server after checking their user names and passwords.

> > For
> > > > each transaction, the Web program will write the information about

> user
> > > > name, filename upload, filesize, date and time of uploading into the

> log
> > > > file. (The name of the log file is constructed by Current Year and

> > Current
> > > > Month in my program). Is there any problems with writing into the

log
> > > file
> > > > if there are multi-users access on the same page to upload files

????.
> > My
> > > > program works OK with the code below, but I don't know if there is

any
> > > > problems when multi-users perform writing into the same log file at

> the
> > > same
> > > > time ??? Here is a part of my code to open the log file for

> editing
> > :
> > > >
> > > > 'WRITE LO LOG FILE
> > > > Dim strFile as string= CurrYear & CurrMonth
> > > > Dim LogFile As String = Server.MapPath("LOGS") & "\" & strFile

> &
> > > > ".log"
> > > >
> > > > Dim aLogfile As FileInfo = New FileInfo(LogFile)
> > > > If aLogfile.Exists Then
> > > > Dim objStreamWriter as StreamWriter
> > > > objStreamWriter = File.AppendText(LogFile)
> > > > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > > > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & "

"
> &
> > > > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & "

bytes
> "
> > > > objStreamWriter.WriteLine(strLine)
> > > > objStreamWriter.Close()
> > > > Else
> > > > Dim objStreamWriter as StreamWriter =

> File.CreateText(LogFile)
> > > > Dim strLine as string= CurrYear & CurrMonth & CurrDay &
> > > > CurrHour & CurrMin & CurrSec & " " & radioFileUp.selectedValue & "

"
> &
> > > > Session("UserID") & " " & Carrier & " " & fn & " " & fsize & "

bytes
> "
> > > > objStreamWriter.WriteLine(strLine)
> > > > objStreamWriter.Close()
> > > > End If
> > > >
> > > > Please give me some advises. Do I need to change anything in my code

> > for
> > > it
> > > > ?. Thanks in advance.
> > > >
> > > >
> > >
> > >

> >
> >

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Reading into a buffer and writing from it at the same time A. Farber Java 8 10-20-2009 01:00 PM
Problem two users writing to the same file at same time id10t error ASP .Net 3 08-31-2009 06:33 PM
JAVA Time Problem: Want to get the current time and perform validation The One Java 5 11-29-2006 02:37 PM
501 PIX "deny any any" "allow any any" Any Anybody? Networking Student Cisco 4 11-16-2006 10:40 PM
Two processes writing to the same XML file at the same time? darrel ASP .Net 2 04-05-2006 05:30 PM



Advertisments
 



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