I have an aspx page that is set up to copy backed-up DB files from a shared
directory to a local folder. For some reason, it is being denied access to
the network share. I have the web app running under a domain account that I
know for a fact has access. it works fine when I log on to the network and
browse the directory manually. Even when I grant full control to everyone on
the share and the underlying folder itself, I still can't access it through
code. The funny thing is though, this same code works fine when executed
within a windows service which runs under the same domain account. Help!
Code follows:
**** this first line is the one throwing the exception ********
Dim objFromDirectory As DirectoryInfo = New
DirectoryInfo("\\[server]\[network share]
Dim strNewBackupPath As String = "C:\SQLBackUp\Data"
Dim objToDirectory As DirectoryInfo = New
DirectoryInfo(strNewBackupPath)
Dim objOldBackupFiles() As FileInfo =
objToDirectory.GetFiles()
Dim objNewBackupFiles() As FileInfo =
objFromDirectory.GetFiles()
Dim x As Integer
Dim intNewBackupFileCount As Integer =
UBound(objNewBackupFiles)
Dim objCurrentFile As FileInfo
Dim objBackUpLog As XmlDocument = New XmlDocument
Dim objNewParentNode As XmlElement
Dim objRootNode As XmlElement
Dim objLogEntryDateNode As XmlElement
Dim objNewChildNode As XmlElement
Dim objDateNodeList As XmlNodeList
Dim strStartTime As String
Dim strEndTime As String
Dim intFileSize As Integer = 0
Dim intLogEntryCount As Integer
Dim strBackUpLogPath As String =
"C:\SQLBackUp\SQLBackupLog.xml"
Dim objCurrentDateNode As XmlElement
Try
strStartTime = DateTime.Now.ToLongTimeString()
'-- delete old set of backups. GV 1/28/05
If UBound(objOldBackupFiles) > 0 Then
For x = 0 To UBound(objOldBackupFiles)
File.Delete(objOldBackupFiles(x).FullName)
Next
End If
'-- copy new set of backups. GV 1/28/05
'- if no backup files are found, throw an exception. GV
6/2/05
If intNewBackupFileCount < 1 Then
Throw New ApplicationException("No files were found.")
Else
For x = 0 To intNewBackupFileCount
objCurrentFile = objNewBackupFiles(x)
intFileSize = intFileSize + objCurrentFile.Length
objCurrentFile.CopyTo(strNewBackupPath & "\" &
objCurrentFile.Name)
Next
End If
strEndTime = DateTime.Now.ToLongTimeString()
'-- write file-copy info to XML log. GV 1/28/05
objBackUpLog.Load(strBackUpLogPath)
objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date
objNewChildNode = objBackUpLog.CreateElement("date")
objNewChildNode.InnerText =
DateTime.Now.ToShortDateString()
objNewParentNode.AppendChild(objNewChildNode)
' time started
objNewChildNode = objBackUpLog.CreateElement("starttime")
objNewChildNode.InnerText = strStartTime
objNewParentNode.AppendChild(objNewChildNode)
' time ended
objNewChildNode = objBackUpLog.CreateElement("endtime")
objNewChildNode.InnerText = strEndTime
objNewParentNode.AppendChild(objNewChildNode)
' total amount copied (in megs)
objNewChildNode = objBackUpLog.CreateElement("dataamount")
objNewChildNode.InnerText = CStr(Math.Round(intFileSize
/ 1048576, 2) & " Mb")
objNewParentNode.AppendChild(objNewChildNode)
' total number of files copied
objNewChildNode = objBackUpLog.CreateElement("nbroffiles")
objNewChildNode.InnerText = CStr(intNewBackupFileCount +
1)
objNewParentNode.AppendChild(objNewChildNode)
'--- delete entries older than 4 months. GV 1/31/05
objDateNodeList =
objBackUpLog.SelectNodes("/log/logentry/date")
For Each objCurrentDateNode In objDateNodeList
If DateValue(CDate(objCurrentDateNode.InnerXml)) <
DateValue(DateAdd("d", -120, DateTime.Now)) Then
objCurrentDateNode.RemoveAll()
objRootNode =
objCurrentDateNode.ParentNode.ParentNode
objRootNode.RemoveChild(objCurrentDateNode.ParentN ode)
End If
Next
'--- save changes. GV 1/31/05
objBackUpLog.Save(strBackUpLogPath)
intOperationSuccess = 1
Catch exc As Exception
'--- if exception occurs, write error info to XML log.
GV 1/28/05
objBackUpLog.Load(strBackUpLogPath)
objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date
objNewChildNode = objBackUpLog.CreateElement("date")
objNewChildNode.InnerText =
DateTime.Now.ToShortDateString()
objNewParentNode.AppendChild(objNewChildNode)
' error header
objNewChildNode =
objBackUpLog.CreateElement("errorheader")
objNewChildNode.InnerText = "** ERROR **"
objNewParentNode.AppendChild(objNewChildNode)
' error description
objNewChildNode =
objBackUpLog.CreateElement("errordescription")
objNewChildNode.InnerText = exc.Message.ToString
objNewParentNode.AppendChild(objNewChildNode)
objBackUpLog.Save(strBackUpLogPath)
objEventLog.WriteEntry("**** ERROR **** " &
exc.Message.ToString() & " occurred on " & DateTime.Now & ".")
intOperationSuccess = 0
'---
Finally
'--- destroy all objects. GV 1/28/05
x = Nothing
intFileSize = Nothing
intLogEntryCount = Nothing
If Not (objBackUpLog Is Nothing) Then objBackUpLog =
Nothing
If Not (objCurrentFile Is Nothing) Then objCurrentFile =
Nothing
intNewBackupFileCount = Nothing
If Not (objNewBackupFiles Is Nothing) Then
objNewBackupFiles = Nothing
If Not (objOldBackupFiles Is Nothing) Then
objOldBackupFiles = Nothing
If Not (objToDirectory Is Nothing) Then objToDirectory =
Nothing
If Not (strNewBackupPath Is Nothing) Then
strNewBackupPath = Nothing
If Not (objFromDirectory Is Nothing) Then
objFromDirectory = Nothing
If Not (strStartTime Is Nothing) Then strStartTime =
Nothing
If Not (strEndTime Is Nothing) Then strEndTime = Nothing
If Not (objRootNode Is Nothing) Then objRootNode = Nothing
If Not (objNewParentNode Is Nothing) Then
objNewParentNode = Nothing
If Not (objNewChildNode Is Nothing) Then objNewChildNode
= Nothing
If Not (objDateNodeList Is Nothing) Then objDateNodeList
= Nothing
If Not (objCurrentDateNode Is Nothing) Then
objCurrentDateNode = Nothing
If Not (objLogEntryDateNode Is Nothing) Then
objLogEntryDateNode = Nothing
If Not (strBackUpLogPath Is Nothing) Then
strBackUpLogPath = Nothing
'---
End Try 6 2706
Another MVP has written a great article about this http://west-wind.com/weblog/posts/1572.aspx
The crux is (and its a pain to get working) that using Anonymous
authentication (so no impersonation) the local ASPNET account has to have
the same credentials (username and password) on both machines in order to
delegate security. With basic authentication and impersonation you need to
use a domain account which can delegate and you can check how to mark your
impersonated account able to use security delegation here: http://msdn.microsoft.com/library/de...SecNetHT05.asp.
This is also required if you want to use NTLM authentication over kerberos
Personally, I would implement a the remote server as an http device and use
http requests, checking the referrer whihc makes life a lot simpler than
using mapped network drives.
--
Regards
John Timney
ASP.NET MVP
Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message
news:9B**********************************@microsof t.com... I have an aspx page that is set up to copy backed-up DB files from a shared directory to a local folder. For some reason, it is being denied access to the network share. I have the web app running under a domain account that I know for a fact has access. it works fine when I log on to the network and browse the directory manually. Even when I grant full control to everyone on the share and the underlying folder itself, I still can't access it through code. The funny thing is though, this same code works fine when executed within a windows service which runs under the same domain account. Help!
Code follows:
**** this first line is the one throwing the exception ******** Dim objFromDirectory As DirectoryInfo = New DirectoryInfo("\\[server]\[network share]
Dim strNewBackupPath As String = "C:\SQLBackUp\Data" Dim objToDirectory As DirectoryInfo = New DirectoryInfo(strNewBackupPath) Dim objOldBackupFiles() As FileInfo = objToDirectory.GetFiles() Dim objNewBackupFiles() As FileInfo = objFromDirectory.GetFiles() Dim x As Integer Dim intNewBackupFileCount As Integer = UBound(objNewBackupFiles) Dim objCurrentFile As FileInfo Dim objBackUpLog As XmlDocument = New XmlDocument Dim objNewParentNode As XmlElement Dim objRootNode As XmlElement Dim objLogEntryDateNode As XmlElement Dim objNewChildNode As XmlElement Dim objDateNodeList As XmlNodeList Dim strStartTime As String Dim strEndTime As String Dim intFileSize As Integer = 0 Dim intLogEntryCount As Integer Dim strBackUpLogPath As String = "C:\SQLBackUp\SQLBackupLog.xml" Dim objCurrentDateNode As XmlElement Try strStartTime = DateTime.Now.ToLongTimeString()
'-- delete old set of backups. GV 1/28/05 If UBound(objOldBackupFiles) > 0 Then For x = 0 To UBound(objOldBackupFiles) File.Delete(objOldBackupFiles(x).FullName) Next End If
'-- copy new set of backups. GV 1/28/05
'- if no backup files are found, throw an exception. GV 6/2/05 If intNewBackupFileCount < 1 Then Throw New ApplicationException("No files were found.")
Else For x = 0 To intNewBackupFileCount objCurrentFile = objNewBackupFiles(x) intFileSize = intFileSize + objCurrentFile.Length objCurrentFile.CopyTo(strNewBackupPath & "\" & objCurrentFile.Name) Next End If
strEndTime = DateTime.Now.ToLongTimeString()
'-- write file-copy info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' time started objNewChildNode = objBackUpLog.CreateElement("starttime") objNewChildNode.InnerText = strStartTime objNewParentNode.AppendChild(objNewChildNode)
' time ended objNewChildNode = objBackUpLog.CreateElement("endtime") objNewChildNode.InnerText = strEndTime objNewParentNode.AppendChild(objNewChildNode)
' total amount copied (in megs) objNewChildNode = objBackUpLog.CreateElement("dataamount") objNewChildNode.InnerText = CStr(Math.Round(intFileSize / 1048576, 2) & " Mb") objNewParentNode.AppendChild(objNewChildNode)
' total number of files copied objNewChildNode = objBackUpLog.CreateElement("nbroffiles") objNewChildNode.InnerText = CStr(intNewBackupFileCount + 1) objNewParentNode.AppendChild(objNewChildNode)
'--- delete entries older than 4 months. GV 1/31/05 objDateNodeList = objBackUpLog.SelectNodes("/log/logentry/date") For Each objCurrentDateNode In objDateNodeList If DateValue(CDate(objCurrentDateNode.InnerXml)) < DateValue(DateAdd("d", -120, DateTime.Now)) Then objCurrentDateNode.RemoveAll() objRootNode = objCurrentDateNode.ParentNode.ParentNode
objRootNode.RemoveChild(objCurrentDateNode.ParentN ode) End If Next
'--- save changes. GV 1/31/05 objBackUpLog.Save(strBackUpLogPath) intOperationSuccess = 1 Catch exc As Exception '--- if exception occurs, write error info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' error header objNewChildNode = objBackUpLog.CreateElement("errorheader") objNewChildNode.InnerText = "** ERROR **" objNewParentNode.AppendChild(objNewChildNode)
' error description objNewChildNode = objBackUpLog.CreateElement("errordescription") objNewChildNode.InnerText = exc.Message.ToString objNewParentNode.AppendChild(objNewChildNode) objBackUpLog.Save(strBackUpLogPath) objEventLog.WriteEntry("**** ERROR **** " & exc.Message.ToString() & " occurred on " & DateTime.Now & ".") intOperationSuccess = 0 '--- Finally '--- destroy all objects. GV 1/28/05 x = Nothing intFileSize = Nothing intLogEntryCount = Nothing If Not (objBackUpLog Is Nothing) Then objBackUpLog = Nothing If Not (objCurrentFile Is Nothing) Then objCurrentFile = Nothing intNewBackupFileCount = Nothing If Not (objNewBackupFiles Is Nothing) Then objNewBackupFiles = Nothing If Not (objOldBackupFiles Is Nothing) Then objOldBackupFiles = Nothing If Not (objToDirectory Is Nothing) Then objToDirectory = Nothing If Not (strNewBackupPath Is Nothing) Then strNewBackupPath = Nothing If Not (objFromDirectory Is Nothing) Then objFromDirectory = Nothing If Not (strStartTime Is Nothing) Then strStartTime = Nothing If Not (strEndTime Is Nothing) Then strEndTime = Nothing If Not (objRootNode Is Nothing) Then objRootNode = Nothing If Not (objNewParentNode Is Nothing) Then objNewParentNode = Nothing If Not (objNewChildNode Is Nothing) Then objNewChildNode = Nothing If Not (objDateNodeList Is Nothing) Then objDateNodeList = Nothing If Not (objCurrentDateNode Is Nothing) Then objCurrentDateNode = Nothing If Not (objLogEntryDateNode Is Nothing) Then objLogEntryDateNode = Nothing If Not (strBackUpLogPath Is Nothing) Then strBackUpLogPath = Nothing '--- End Try
Another MVP has written a great article about this http://west-wind.com/weblog/posts/1572.aspx
The crux is (and its a pain to get working) that using Anonymous
authentication (so no impersonation) the local ASPNET account has to have
the same credentials (username and password) on both machines in order to
delegate security. With basic authentication and impersonation you need to
use a domain account which can delegate and you can check how to mark your
impersonated account able to use security delegation here: http://msdn.microsoft.com/library/de...SecNetHT05.asp.
This is also required if you want to use NTLM authentication over kerberos
Personally, I would implement a the remote server as an http device and use
http requests, checking the referrer whihc makes life a lot simpler than
using mapped network drives.
--
Regards
John Timney
ASP.NET MVP
Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message
news:9B**********************************@microsof t.com... I have an aspx page that is set up to copy backed-up DB files from a shared directory to a local folder. For some reason, it is being denied access to the network share. I have the web app running under a domain account that I know for a fact has access. it works fine when I log on to the network and browse the directory manually. Even when I grant full control to everyone on the share and the underlying folder itself, I still can't access it through code. The funny thing is though, this same code works fine when executed within a windows service which runs under the same domain account. Help!
Code follows:
**** this first line is the one throwing the exception ******** Dim objFromDirectory As DirectoryInfo = New DirectoryInfo("\\[server]\[network share]
Dim strNewBackupPath As String = "C:\SQLBackUp\Data" Dim objToDirectory As DirectoryInfo = New DirectoryInfo(strNewBackupPath) Dim objOldBackupFiles() As FileInfo = objToDirectory.GetFiles() Dim objNewBackupFiles() As FileInfo = objFromDirectory.GetFiles() Dim x As Integer Dim intNewBackupFileCount As Integer = UBound(objNewBackupFiles) Dim objCurrentFile As FileInfo Dim objBackUpLog As XmlDocument = New XmlDocument Dim objNewParentNode As XmlElement Dim objRootNode As XmlElement Dim objLogEntryDateNode As XmlElement Dim objNewChildNode As XmlElement Dim objDateNodeList As XmlNodeList Dim strStartTime As String Dim strEndTime As String Dim intFileSize As Integer = 0 Dim intLogEntryCount As Integer Dim strBackUpLogPath As String = "C:\SQLBackUp\SQLBackupLog.xml" Dim objCurrentDateNode As XmlElement Try strStartTime = DateTime.Now.ToLongTimeString()
'-- delete old set of backups. GV 1/28/05 If UBound(objOldBackupFiles) > 0 Then For x = 0 To UBound(objOldBackupFiles) File.Delete(objOldBackupFiles(x).FullName) Next End If
'-- copy new set of backups. GV 1/28/05
'- if no backup files are found, throw an exception. GV 6/2/05 If intNewBackupFileCount < 1 Then Throw New ApplicationException("No files were found.")
Else For x = 0 To intNewBackupFileCount objCurrentFile = objNewBackupFiles(x) intFileSize = intFileSize + objCurrentFile.Length objCurrentFile.CopyTo(strNewBackupPath & "\" & objCurrentFile.Name) Next End If
strEndTime = DateTime.Now.ToLongTimeString()
'-- write file-copy info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' time started objNewChildNode = objBackUpLog.CreateElement("starttime") objNewChildNode.InnerText = strStartTime objNewParentNode.AppendChild(objNewChildNode)
' time ended objNewChildNode = objBackUpLog.CreateElement("endtime") objNewChildNode.InnerText = strEndTime objNewParentNode.AppendChild(objNewChildNode)
' total amount copied (in megs) objNewChildNode = objBackUpLog.CreateElement("dataamount") objNewChildNode.InnerText = CStr(Math.Round(intFileSize / 1048576, 2) & " Mb") objNewParentNode.AppendChild(objNewChildNode)
' total number of files copied objNewChildNode = objBackUpLog.CreateElement("nbroffiles") objNewChildNode.InnerText = CStr(intNewBackupFileCount + 1) objNewParentNode.AppendChild(objNewChildNode)
'--- delete entries older than 4 months. GV 1/31/05 objDateNodeList = objBackUpLog.SelectNodes("/log/logentry/date") For Each objCurrentDateNode In objDateNodeList If DateValue(CDate(objCurrentDateNode.InnerXml)) < DateValue(DateAdd("d", -120, DateTime.Now)) Then objCurrentDateNode.RemoveAll() objRootNode = objCurrentDateNode.ParentNode.ParentNode
objRootNode.RemoveChild(objCurrentDateNode.ParentN ode) End If Next
'--- save changes. GV 1/31/05 objBackUpLog.Save(strBackUpLogPath) intOperationSuccess = 1 Catch exc As Exception '--- if exception occurs, write error info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' error header objNewChildNode = objBackUpLog.CreateElement("errorheader") objNewChildNode.InnerText = "** ERROR **" objNewParentNode.AppendChild(objNewChildNode)
' error description objNewChildNode = objBackUpLog.CreateElement("errordescription") objNewChildNode.InnerText = exc.Message.ToString objNewParentNode.AppendChild(objNewChildNode) objBackUpLog.Save(strBackUpLogPath) objEventLog.WriteEntry("**** ERROR **** " & exc.Message.ToString() & " occurred on " & DateTime.Now & ".") intOperationSuccess = 0 '--- Finally '--- destroy all objects. GV 1/28/05 x = Nothing intFileSize = Nothing intLogEntryCount = Nothing If Not (objBackUpLog Is Nothing) Then objBackUpLog = Nothing If Not (objCurrentFile Is Nothing) Then objCurrentFile = Nothing intNewBackupFileCount = Nothing If Not (objNewBackupFiles Is Nothing) Then objNewBackupFiles = Nothing If Not (objOldBackupFiles Is Nothing) Then objOldBackupFiles = Nothing If Not (objToDirectory Is Nothing) Then objToDirectory = Nothing If Not (strNewBackupPath Is Nothing) Then strNewBackupPath = Nothing If Not (objFromDirectory Is Nothing) Then objFromDirectory = Nothing If Not (strStartTime Is Nothing) Then strStartTime = Nothing If Not (strEndTime Is Nothing) Then strEndTime = Nothing If Not (objRootNode Is Nothing) Then objRootNode = Nothing If Not (objNewParentNode Is Nothing) Then objNewParentNode = Nothing If Not (objNewChildNode Is Nothing) Then objNewChildNode = Nothing If Not (objDateNodeList Is Nothing) Then objDateNodeList = Nothing If Not (objCurrentDateNode Is Nothing) Then objCurrentDateNode = Nothing If Not (objLogEntryDateNode Is Nothing) Then objLogEntryDateNode = Nothing If Not (strBackUpLogPath Is Nothing) Then strBackUpLogPath = Nothing '--- End Try
Problem solved! All I had to do was set "identity impersonate" to "true" in
my web.config. Thank you so much!
"John Timney (ASP.NET MVP)" wrote: Another MVP has written a great article about this http://west-wind.com/weblog/posts/1572.aspx
The crux is (and its a pain to get working) that using Anonymous authentication (so no impersonation) the local ASPNET account has to have the same credentials (username and password) on both machines in order to delegate security. With basic authentication and impersonation you need to use a domain account which can delegate and you can check how to mark your impersonated account able to use security delegation here: http://msdn.microsoft.com/library/de...SecNetHT05.asp. This is also required if you want to use NTLM authentication over kerberos
Personally, I would implement a the remote server as an http device and use http requests, checking the referrer whihc makes life a lot simpler than using mapped network drives. -- Regards
John Timney ASP.NET MVP Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message news:9B**********************************@microsof t.com...I have an aspx page that is set up to copy backed-up DB files from a shared directory to a local folder. For some reason, it is being denied access to the network share. I have the web app running under a domain account that I know for a fact has access. it works fine when I log on to the network and browse the directory manually. Even when I grant full control to everyone on the share and the underlying folder itself, I still can't access it through code. The funny thing is though, this same code works fine when executed within a windows service which runs under the same domain account. Help!
Code follows:
**** this first line is the one throwing the exception ******** Dim objFromDirectory As DirectoryInfo = New DirectoryInfo("\\[server]\[network share]
Dim strNewBackupPath As String = "C:\SQLBackUp\Data" Dim objToDirectory As DirectoryInfo = New DirectoryInfo(strNewBackupPath) Dim objOldBackupFiles() As FileInfo = objToDirectory.GetFiles() Dim objNewBackupFiles() As FileInfo = objFromDirectory.GetFiles() Dim x As Integer Dim intNewBackupFileCount As Integer = UBound(objNewBackupFiles) Dim objCurrentFile As FileInfo Dim objBackUpLog As XmlDocument = New XmlDocument Dim objNewParentNode As XmlElement Dim objRootNode As XmlElement Dim objLogEntryDateNode As XmlElement Dim objNewChildNode As XmlElement Dim objDateNodeList As XmlNodeList Dim strStartTime As String Dim strEndTime As String Dim intFileSize As Integer = 0 Dim intLogEntryCount As Integer Dim strBackUpLogPath As String = "C:\SQLBackUp\SQLBackupLog.xml" Dim objCurrentDateNode As XmlElement Try strStartTime = DateTime.Now.ToLongTimeString()
'-- delete old set of backups. GV 1/28/05 If UBound(objOldBackupFiles) > 0 Then For x = 0 To UBound(objOldBackupFiles) File.Delete(objOldBackupFiles(x).FullName) Next End If
'-- copy new set of backups. GV 1/28/05
'- if no backup files are found, throw an exception. GV 6/2/05 If intNewBackupFileCount < 1 Then Throw New ApplicationException("No files were found.")
Else For x = 0 To intNewBackupFileCount objCurrentFile = objNewBackupFiles(x) intFileSize = intFileSize + objCurrentFile.Length objCurrentFile.CopyTo(strNewBackupPath & "\" & objCurrentFile.Name) Next End If
strEndTime = DateTime.Now.ToLongTimeString()
'-- write file-copy info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' time started objNewChildNode = objBackUpLog.CreateElement("starttime") objNewChildNode.InnerText = strStartTime objNewParentNode.AppendChild(objNewChildNode)
' time ended objNewChildNode = objBackUpLog.CreateElement("endtime") objNewChildNode.InnerText = strEndTime objNewParentNode.AppendChild(objNewChildNode)
' total amount copied (in megs) objNewChildNode = objBackUpLog.CreateElement("dataamount") objNewChildNode.InnerText = CStr(Math.Round(intFileSize / 1048576, 2) & " Mb") objNewParentNode.AppendChild(objNewChildNode)
' total number of files copied objNewChildNode = objBackUpLog.CreateElement("nbroffiles") objNewChildNode.InnerText = CStr(intNewBackupFileCount + 1) objNewParentNode.AppendChild(objNewChildNode)
'--- delete entries older than 4 months. GV 1/31/05 objDateNodeList = objBackUpLog.SelectNodes("/log/logentry/date") For Each objCurrentDateNode In objDateNodeList If DateValue(CDate(objCurrentDateNode.InnerXml)) < DateValue(DateAdd("d", -120, DateTime.Now)) Then objCurrentDateNode.RemoveAll() objRootNode = objCurrentDateNode.ParentNode.ParentNode
objRootNode.RemoveChild(objCurrentDateNode.ParentN ode) End If Next
'--- save changes. GV 1/31/05 objBackUpLog.Save(strBackUpLogPath) intOperationSuccess = 1 Catch exc As Exception '--- if exception occurs, write error info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' error header objNewChildNode = objBackUpLog.CreateElement("errorheader") objNewChildNode.InnerText = "** ERROR **" objNewParentNode.AppendChild(objNewChildNode)
' error description objNewChildNode = objBackUpLog.CreateElement("errordescription") objNewChildNode.InnerText = exc.Message.ToString objNewParentNode.AppendChild(objNewChildNode) objBackUpLog.Save(strBackUpLogPath) objEventLog.WriteEntry("**** ERROR **** " & exc.Message.ToString() & " occurred on " & DateTime.Now & ".") intOperationSuccess = 0 '--- Finally '--- destroy all objects. GV 1/28/05 x = Nothing intFileSize = Nothing intLogEntryCount = Nothing If Not (objBackUpLog Is Nothing) Then objBackUpLog = Nothing If Not (objCurrentFile Is Nothing) Then objCurrentFile = Nothing intNewBackupFileCount = Nothing If Not (objNewBackupFiles Is Nothing) Then objNewBackupFiles = Nothing If Not (objOldBackupFiles Is Nothing) Then objOldBackupFiles = Nothing If Not (objToDirectory Is Nothing) Then objToDirectory = Nothing If Not (strNewBackupPath Is Nothing) Then strNewBackupPath = Nothing If Not (objFromDirectory Is Nothing) Then objFromDirectory = Nothing If Not (strStartTime Is Nothing) Then strStartTime = Nothing If Not (strEndTime Is Nothing) Then strEndTime = Nothing If Not (objRootNode Is Nothing) Then objRootNode = Nothing If Not (objNewParentNode Is Nothing) Then objNewParentNode = Nothing If Not (objNewChildNode Is Nothing) Then objNewChildNode = Nothing If Not (objDateNodeList Is Nothing) Then objDateNodeList = Nothing If Not (objCurrentDateNode Is Nothing) Then objCurrentDateNode = Nothing If Not (objLogEntryDateNode Is Nothing) Then objLogEntryDateNode = Nothing If Not (strBackUpLogPath Is Nothing) Then strBackUpLogPath = Nothing '--- End Try
glad your sorted :)
--
Regards
John Timney
ASP.NET MVP
Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message
news:CC**********************************@microsof t.com... Problem solved! All I had to do was set "identity impersonate" to "true" in my web.config. Thank you so much!
"John Timney (ASP.NET MVP)" wrote:
Another MVP has written a great article about this http://west-wind.com/weblog/posts/1572.aspx
The crux is (and its a pain to get working) that using Anonymous authentication (so no impersonation) the local ASPNET account has to have the same credentials (username and password) on both machines in order to delegate security. With basic authentication and impersonation you need to use a domain account which can delegate and you can check how to mark your impersonated account able to use security delegation here: http://msdn.microsoft.com/library/de...SecNetHT05.asp. This is also required if you want to use NTLM authentication over kerberos
Personally, I would implement a the remote server as an http device and use http requests, checking the referrer whihc makes life a lot simpler than using mapped network drives. -- Regards
John Timney ASP.NET MVP Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message news:9B**********************************@microsof t.com... >I have an aspx page that is set up to copy backed-up DB files from a >shared > directory to a local folder. For some reason, it is being denied access > to > the network share. I have the web app running under a domain account > that > I > know for a fact has access. it works fine when I log on to the network > and > browse the directory manually. Even when I grant full control to > everyone > on > the share and the underlying folder itself, I still can't access it > through > code. The funny thing is though, this same code works fine when > executed > within a windows service which runs under the same domain account. > Help! > > Code follows: > > **** this first line is the one throwing the exception ******** > Dim objFromDirectory As DirectoryInfo = New > DirectoryInfo("\\[server]\[network share] > > > Dim strNewBackupPath As String = "C:\SQLBackUp\Data" > Dim objToDirectory As DirectoryInfo = New > DirectoryInfo(strNewBackupPath) > Dim objOldBackupFiles() As FileInfo = > objToDirectory.GetFiles() > Dim objNewBackupFiles() As FileInfo = > objFromDirectory.GetFiles() > Dim x As Integer > Dim intNewBackupFileCount As Integer = > UBound(objNewBackupFiles) > Dim objCurrentFile As FileInfo > Dim objBackUpLog As XmlDocument = New XmlDocument > Dim objNewParentNode As XmlElement > Dim objRootNode As XmlElement > Dim objLogEntryDateNode As XmlElement > Dim objNewChildNode As XmlElement > Dim objDateNodeList As XmlNodeList > Dim strStartTime As String > Dim strEndTime As String > Dim intFileSize As Integer = 0 > Dim intLogEntryCount As Integer > Dim strBackUpLogPath As String = > "C:\SQLBackUp\SQLBackupLog.xml" > Dim objCurrentDateNode As XmlElement > Try > strStartTime = DateTime.Now.ToLongTimeString() > > '-- delete old set of backups. GV 1/28/05 > If UBound(objOldBackupFiles) > 0 Then > For x = 0 To UBound(objOldBackupFiles) > File.Delete(objOldBackupFiles(x).FullName) > Next > End If > > '-- copy new set of backups. GV 1/28/05 > > '- if no backup files are found, throw an exception. > GV > 6/2/05 > If intNewBackupFileCount < 1 Then > Throw New ApplicationException("No files were > found.") > > Else > For x = 0 To intNewBackupFileCount > objCurrentFile = objNewBackupFiles(x) > intFileSize = intFileSize + > objCurrentFile.Length > objCurrentFile.CopyTo(strNewBackupPath & "\" > & > objCurrentFile.Name) > Next > End If > > strEndTime = DateTime.Now.ToLongTimeString() > > '-- write file-copy info to XML log. GV 1/28/05 > objBackUpLog.Load(strBackUpLogPath) > objNewParentNode = > objBackUpLog.CreateElement("logentry") > > objBackUpLog.DocumentElement.AppendChild(objNewPar entNode) > > ' current date > objNewChildNode = objBackUpLog.CreateElement("date") > objNewChildNode.InnerText = > DateTime.Now.ToShortDateString() > objNewParentNode.AppendChild(objNewChildNode) > > ' time started > objNewChildNode = > objBackUpLog.CreateElement("starttime") > objNewChildNode.InnerText = strStartTime > objNewParentNode.AppendChild(objNewChildNode) > > ' time ended > objNewChildNode = > objBackUpLog.CreateElement("endtime") > objNewChildNode.InnerText = strEndTime > objNewParentNode.AppendChild(objNewChildNode) > > ' total amount copied (in megs) > objNewChildNode = > objBackUpLog.CreateElement("dataamount") > objNewChildNode.InnerText = > CStr(Math.Round(intFileSize > / 1048576, 2) & " Mb") > objNewParentNode.AppendChild(objNewChildNode) > > ' total number of files copied > objNewChildNode = > objBackUpLog.CreateElement("nbroffiles") > objNewChildNode.InnerText = > CStr(intNewBackupFileCount > + > 1) > objNewParentNode.AppendChild(objNewChildNode) > > '--- delete entries older than 4 months. GV 1/31/05 > objDateNodeList = > objBackUpLog.SelectNodes("/log/logentry/date") > For Each objCurrentDateNode In objDateNodeList > If DateValue(CDate(objCurrentDateNode.InnerXml)) > < > DateValue(DateAdd("d", -120, DateTime.Now)) Then > objCurrentDateNode.RemoveAll() > objRootNode = > objCurrentDateNode.ParentNode.ParentNode > > objRootNode.RemoveChild(objCurrentDateNode.ParentN ode) > End If > Next > > '--- save changes. GV 1/31/05 > objBackUpLog.Save(strBackUpLogPath) > intOperationSuccess = 1 > Catch exc As Exception > '--- if exception occurs, write error info to XML > log. > GV 1/28/05 > objBackUpLog.Load(strBackUpLogPath) > objNewParentNode = > objBackUpLog.CreateElement("logentry") > > objBackUpLog.DocumentElement.AppendChild(objNewPar entNode) > > ' current date > objNewChildNode = objBackUpLog.CreateElement("date") > objNewChildNode.InnerText = > DateTime.Now.ToShortDateString() > objNewParentNode.AppendChild(objNewChildNode) > > ' error header > objNewChildNode = > objBackUpLog.CreateElement("errorheader") > objNewChildNode.InnerText = "** ERROR **" > objNewParentNode.AppendChild(objNewChildNode) > > ' error description > objNewChildNode = > objBackUpLog.CreateElement("errordescription") > objNewChildNode.InnerText = exc.Message.ToString > objNewParentNode.AppendChild(objNewChildNode) > objBackUpLog.Save(strBackUpLogPath) > objEventLog.WriteEntry("**** ERROR **** " & > exc.Message.ToString() & " occurred on " & DateTime.Now & ".") > intOperationSuccess = 0 > '--- > Finally > '--- destroy all objects. GV 1/28/05 > x = Nothing > intFileSize = Nothing > intLogEntryCount = Nothing > If Not (objBackUpLog Is Nothing) Then objBackUpLog = > Nothing > If Not (objCurrentFile Is Nothing) Then > objCurrentFile > = > Nothing > intNewBackupFileCount = Nothing > If Not (objNewBackupFiles Is Nothing) Then > objNewBackupFiles = Nothing > If Not (objOldBackupFiles Is Nothing) Then > objOldBackupFiles = Nothing > If Not (objToDirectory Is Nothing) Then > objToDirectory > = > Nothing > If Not (strNewBackupPath Is Nothing) Then > strNewBackupPath = Nothing > If Not (objFromDirectory Is Nothing) Then > objFromDirectory = Nothing > If Not (strStartTime Is Nothing) Then strStartTime = > Nothing > If Not (strEndTime Is Nothing) Then strEndTime = > Nothing > If Not (objRootNode Is Nothing) Then objRootNode = > Nothing > If Not (objNewParentNode Is Nothing) Then > objNewParentNode = Nothing > If Not (objNewChildNode Is Nothing) Then > objNewChildNode > = Nothing > If Not (objDateNodeList Is Nothing) Then > objDateNodeList > = Nothing > If Not (objCurrentDateNode Is Nothing) Then > objCurrentDateNode = Nothing > If Not (objLogEntryDateNode Is Nothing) Then > objLogEntryDateNode = Nothing > If Not (strBackUpLogPath Is Nothing) Then > strBackUpLogPath = Nothing > '--- > End Try >
Problem solved! All I had to do was set "identity impersonate" to "true" in
my web.config. Thank you so much!
"John Timney (ASP.NET MVP)" wrote: Another MVP has written a great article about this http://west-wind.com/weblog/posts/1572.aspx
The crux is (and its a pain to get working) that using Anonymous authentication (so no impersonation) the local ASPNET account has to have the same credentials (username and password) on both machines in order to delegate security. With basic authentication and impersonation you need to use a domain account which can delegate and you can check how to mark your impersonated account able to use security delegation here: http://msdn.microsoft.com/library/de...SecNetHT05.asp. This is also required if you want to use NTLM authentication over kerberos
Personally, I would implement a the remote server as an http device and use http requests, checking the referrer whihc makes life a lot simpler than using mapped network drives. -- Regards
John Timney ASP.NET MVP Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message news:9B**********************************@microsof t.com...I have an aspx page that is set up to copy backed-up DB files from a shared directory to a local folder. For some reason, it is being denied access to the network share. I have the web app running under a domain account that I know for a fact has access. it works fine when I log on to the network and browse the directory manually. Even when I grant full control to everyone on the share and the underlying folder itself, I still can't access it through code. The funny thing is though, this same code works fine when executed within a windows service which runs under the same domain account. Help!
Code follows:
**** this first line is the one throwing the exception ******** Dim objFromDirectory As DirectoryInfo = New DirectoryInfo("\\[server]\[network share]
Dim strNewBackupPath As String = "C:\SQLBackUp\Data" Dim objToDirectory As DirectoryInfo = New DirectoryInfo(strNewBackupPath) Dim objOldBackupFiles() As FileInfo = objToDirectory.GetFiles() Dim objNewBackupFiles() As FileInfo = objFromDirectory.GetFiles() Dim x As Integer Dim intNewBackupFileCount As Integer = UBound(objNewBackupFiles) Dim objCurrentFile As FileInfo Dim objBackUpLog As XmlDocument = New XmlDocument Dim objNewParentNode As XmlElement Dim objRootNode As XmlElement Dim objLogEntryDateNode As XmlElement Dim objNewChildNode As XmlElement Dim objDateNodeList As XmlNodeList Dim strStartTime As String Dim strEndTime As String Dim intFileSize As Integer = 0 Dim intLogEntryCount As Integer Dim strBackUpLogPath As String = "C:\SQLBackUp\SQLBackupLog.xml" Dim objCurrentDateNode As XmlElement Try strStartTime = DateTime.Now.ToLongTimeString()
'-- delete old set of backups. GV 1/28/05 If UBound(objOldBackupFiles) > 0 Then For x = 0 To UBound(objOldBackupFiles) File.Delete(objOldBackupFiles(x).FullName) Next End If
'-- copy new set of backups. GV 1/28/05
'- if no backup files are found, throw an exception. GV 6/2/05 If intNewBackupFileCount < 1 Then Throw New ApplicationException("No files were found.")
Else For x = 0 To intNewBackupFileCount objCurrentFile = objNewBackupFiles(x) intFileSize = intFileSize + objCurrentFile.Length objCurrentFile.CopyTo(strNewBackupPath & "\" & objCurrentFile.Name) Next End If
strEndTime = DateTime.Now.ToLongTimeString()
'-- write file-copy info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' time started objNewChildNode = objBackUpLog.CreateElement("starttime") objNewChildNode.InnerText = strStartTime objNewParentNode.AppendChild(objNewChildNode)
' time ended objNewChildNode = objBackUpLog.CreateElement("endtime") objNewChildNode.InnerText = strEndTime objNewParentNode.AppendChild(objNewChildNode)
' total amount copied (in megs) objNewChildNode = objBackUpLog.CreateElement("dataamount") objNewChildNode.InnerText = CStr(Math.Round(intFileSize / 1048576, 2) & " Mb") objNewParentNode.AppendChild(objNewChildNode)
' total number of files copied objNewChildNode = objBackUpLog.CreateElement("nbroffiles") objNewChildNode.InnerText = CStr(intNewBackupFileCount + 1) objNewParentNode.AppendChild(objNewChildNode)
'--- delete entries older than 4 months. GV 1/31/05 objDateNodeList = objBackUpLog.SelectNodes("/log/logentry/date") For Each objCurrentDateNode In objDateNodeList If DateValue(CDate(objCurrentDateNode.InnerXml)) < DateValue(DateAdd("d", -120, DateTime.Now)) Then objCurrentDateNode.RemoveAll() objRootNode = objCurrentDateNode.ParentNode.ParentNode
objRootNode.RemoveChild(objCurrentDateNode.ParentN ode) End If Next
'--- save changes. GV 1/31/05 objBackUpLog.Save(strBackUpLogPath) intOperationSuccess = 1 Catch exc As Exception '--- if exception occurs, write error info to XML log. GV 1/28/05 objBackUpLog.Load(strBackUpLogPath) objNewParentNode = objBackUpLog.CreateElement("logentry")
objBackUpLog.DocumentElement.AppendChild(objNewPar entNode)
' current date objNewChildNode = objBackUpLog.CreateElement("date") objNewChildNode.InnerText = DateTime.Now.ToShortDateString() objNewParentNode.AppendChild(objNewChildNode)
' error header objNewChildNode = objBackUpLog.CreateElement("errorheader") objNewChildNode.InnerText = "** ERROR **" objNewParentNode.AppendChild(objNewChildNode)
' error description objNewChildNode = objBackUpLog.CreateElement("errordescription") objNewChildNode.InnerText = exc.Message.ToString objNewParentNode.AppendChild(objNewChildNode) objBackUpLog.Save(strBackUpLogPath) objEventLog.WriteEntry("**** ERROR **** " & exc.Message.ToString() & " occurred on " & DateTime.Now & ".") intOperationSuccess = 0 '--- Finally '--- destroy all objects. GV 1/28/05 x = Nothing intFileSize = Nothing intLogEntryCount = Nothing If Not (objBackUpLog Is Nothing) Then objBackUpLog = Nothing If Not (objCurrentFile Is Nothing) Then objCurrentFile = Nothing intNewBackupFileCount = Nothing If Not (objNewBackupFiles Is Nothing) Then objNewBackupFiles = Nothing If Not (objOldBackupFiles Is Nothing) Then objOldBackupFiles = Nothing If Not (objToDirectory Is Nothing) Then objToDirectory = Nothing If Not (strNewBackupPath Is Nothing) Then strNewBackupPath = Nothing If Not (objFromDirectory Is Nothing) Then objFromDirectory = Nothing If Not (strStartTime Is Nothing) Then strStartTime = Nothing If Not (strEndTime Is Nothing) Then strEndTime = Nothing If Not (objRootNode Is Nothing) Then objRootNode = Nothing If Not (objNewParentNode Is Nothing) Then objNewParentNode = Nothing If Not (objNewChildNode Is Nothing) Then objNewChildNode = Nothing If Not (objDateNodeList Is Nothing) Then objDateNodeList = Nothing If Not (objCurrentDateNode Is Nothing) Then objCurrentDateNode = Nothing If Not (objLogEntryDateNode Is Nothing) Then objLogEntryDateNode = Nothing If Not (strBackUpLogPath Is Nothing) Then strBackUpLogPath = Nothing '--- End Try
glad your sorted :)
--
Regards
John Timney
ASP.NET MVP
Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message
news:CC**********************************@microsof t.com... Problem solved! All I had to do was set "identity impersonate" to "true" in my web.config. Thank you so much!
"John Timney (ASP.NET MVP)" wrote:
Another MVP has written a great article about this http://west-wind.com/weblog/posts/1572.aspx
The crux is (and its a pain to get working) that using Anonymous authentication (so no impersonation) the local ASPNET account has to have the same credentials (username and password) on both machines in order to delegate security. With basic authentication and impersonation you need to use a domain account which can delegate and you can check how to mark your impersonated account able to use security delegation here: http://msdn.microsoft.com/library/de...SecNetHT05.asp. This is also required if you want to use NTLM authentication over kerberos
Personally, I would implement a the remote server as an http device and use http requests, checking the referrer whihc makes life a lot simpler than using mapped network drives. -- Regards
John Timney ASP.NET MVP Microsoft Regional Director
"Glenn Venzke" <Gl*********@discussions.microsoft.com> wrote in message news:9B**********************************@microsof t.com... >I have an aspx page that is set up to copy backed-up DB files from a >shared > directory to a local folder. For some reason, it is being denied access > to > the network share. I have the web app running under a domain account > that > I > know for a fact has access. it works fine when I log on to the network > and > browse the directory manually. Even when I grant full control to > everyone > on > the share and the underlying folder itself, I still can't access it > through > code. The funny thing is though, this same code works fine when > executed > within a windows service which runs under the same domain account. > Help! > > Code follows: > > **** this first line is the one throwing the exception ******** > Dim objFromDirectory As DirectoryInfo = New > DirectoryInfo("\\[server]\[network share] > > > Dim strNewBackupPath As String = "C:\SQLBackUp\Data" > Dim objToDirectory As DirectoryInfo = New > DirectoryInfo(strNewBackupPath) > Dim objOldBackupFiles() As FileInfo = > objToDirectory.GetFiles() > Dim objNewBackupFiles() As FileInfo = > objFromDirectory.GetFiles() > Dim x As Integer > Dim intNewBackupFileCount As Integer = > UBound(objNewBackupFiles) > Dim objCurrentFile As FileInfo > Dim objBackUpLog As XmlDocument = New XmlDocument > Dim objNewParentNode As XmlElement > Dim objRootNode As XmlElement > Dim objLogEntryDateNode As XmlElement > Dim objNewChildNode As XmlElement > Dim objDateNodeList As XmlNodeList > Dim strStartTime As String > Dim strEndTime As String > Dim intFileSize As Integer = 0 > Dim intLogEntryCount As Integer > Dim strBackUpLogPath As String = > "C:\SQLBackUp\SQLBackupLog.xml" > Dim objCurrentDateNode As XmlElement > Try > strStartTime = DateTime.Now.ToLongTimeString() > > '-- delete old set of backups. GV 1/28/05 > If UBound(objOldBackupFiles) > 0 Then > For x = 0 To UBound(objOldBackupFiles) > File.Delete(objOldBackupFiles(x).FullName) > Next > End If > > '-- copy new set of backups. GV 1/28/05 > > '- if no backup files are found, throw an exception. > GV > 6/2/05 > If intNewBackupFileCount < 1 Then > Throw New ApplicationException("No files were > found.") > > Else > For x = 0 To intNewBackupFileCount > objCurrentFile = objNewBackupFiles(x) > intFileSize = intFileSize + > objCurrentFile.Length > objCurrentFile.CopyTo(strNewBackupPath & "\" > & > objCurrentFile.Name) > Next > End If > > strEndTime = DateTime.Now.ToLongTimeString() > > '-- write file-copy info to XML log. GV 1/28/05 > objBackUpLog.Load(strBackUpLogPath) > objNewParentNode = > objBackUpLog.CreateElement("logentry") > > objBackUpLog.DocumentElement.AppendChild(objNewPar entNode) > > ' current date > objNewChildNode = objBackUpLog.CreateElement("date") > objNewChildNode.InnerText = > DateTime.Now.ToShortDateString() > objNewParentNode.AppendChild(objNewChildNode) > > ' time started > objNewChildNode = > objBackUpLog.CreateElement("starttime") > objNewChildNode.InnerText = strStartTime > objNewParentNode.AppendChild(objNewChildNode) > > ' time ended > objNewChildNode = > objBackUpLog.CreateElement("endtime") > objNewChildNode.InnerText = strEndTime > objNewParentNode.AppendChild(objNewChildNode) > > ' total amount copied (in megs) > objNewChildNode = > objBackUpLog.CreateElement("dataamount") > objNewChildNode.InnerText = > CStr(Math.Round(intFileSize > / 1048576, 2) & " Mb") > objNewParentNode.AppendChild(objNewChildNode) > > ' total number of files copied > objNewChildNode = > objBackUpLog.CreateElement("nbroffiles") > objNewChildNode.InnerText = > CStr(intNewBackupFileCount > + > 1) > objNewParentNode.AppendChild(objNewChildNode) > > '--- delete entries older than 4 months. GV 1/31/05 > objDateNodeList = > objBackUpLog.SelectNodes("/log/logentry/date") > For Each objCurrentDateNode In objDateNodeList > If DateValue(CDate(objCurrentDateNode.InnerXml)) > < > DateValue(DateAdd("d", -120, DateTime.Now)) Then > objCurrentDateNode.RemoveAll() > objRootNode = > objCurrentDateNode.ParentNode.ParentNode > > objRootNode.RemoveChild(objCurrentDateNode.ParentN ode) > End If > Next > > '--- save changes. GV 1/31/05 > objBackUpLog.Save(strBackUpLogPath) > intOperationSuccess = 1 > Catch exc As Exception > '--- if exception occurs, write error info to XML > log. > GV 1/28/05 > objBackUpLog.Load(strBackUpLogPath) > objNewParentNode = > objBackUpLog.CreateElement("logentry") > > objBackUpLog.DocumentElement.AppendChild(objNewPar entNode) > > ' current date > objNewChildNode = objBackUpLog.CreateElement("date") > objNewChildNode.InnerText = > DateTime.Now.ToShortDateString() > objNewParentNode.AppendChild(objNewChildNode) > > ' error header > objNewChildNode = > objBackUpLog.CreateElement("errorheader") > objNewChildNode.InnerText = "** ERROR **" > objNewParentNode.AppendChild(objNewChildNode) > > ' error description > objNewChildNode = > objBackUpLog.CreateElement("errordescription") > objNewChildNode.InnerText = exc.Message.ToString > objNewParentNode.AppendChild(objNewChildNode) > objBackUpLog.Save(strBackUpLogPath) > objEventLog.WriteEntry("**** ERROR **** " & > exc.Message.ToString() & " occurred on " & DateTime.Now & ".") > intOperationSuccess = 0 > '--- > Finally > '--- destroy all objects. GV 1/28/05 > x = Nothing > intFileSize = Nothing > intLogEntryCount = Nothing > If Not (objBackUpLog Is Nothing) Then objBackUpLog = > Nothing > If Not (objCurrentFile Is Nothing) Then > objCurrentFile > = > Nothing > intNewBackupFileCount = Nothing > If Not (objNewBackupFiles Is Nothing) Then > objNewBackupFiles = Nothing > If Not (objOldBackupFiles Is Nothing) Then > objOldBackupFiles = Nothing > If Not (objToDirectory Is Nothing) Then > objToDirectory > = > Nothing > If Not (strNewBackupPath Is Nothing) Then > strNewBackupPath = Nothing > If Not (objFromDirectory Is Nothing) Then > objFromDirectory = Nothing > If Not (strStartTime Is Nothing) Then strStartTime = > Nothing > If Not (strEndTime Is Nothing) Then strEndTime = > Nothing > If Not (objRootNode Is Nothing) Then objRootNode = > Nothing > If Not (objNewParentNode Is Nothing) Then > objNewParentNode = Nothing > If Not (objNewChildNode Is Nothing) Then > objNewChildNode > = Nothing > If Not (objDateNodeList Is Nothing) Then > objDateNodeList > = Nothing > If Not (objCurrentDateNode Is Nothing) Then > objCurrentDateNode = Nothing > If Not (objLogEntryDateNode Is Nothing) Then > objLogEntryDateNode = Nothing > If Not (strBackUpLogPath Is Nothing) Then > strBackUpLogPath = Nothing > '--- > End Try > This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Paul K. |
last post by:
For the past couple weeks, I've been learning C# (already
know basic C++) and .NET. In the middle of re-coding a
small application I made previously in VB, I am running
into a problem.
Here is...
|
by: Charts |
last post by:
I login as administrator of the machine. However running the following code
get access denied exception for file inside the directory.
The source code:
DirectoryInfo target = new...
|
by: Glenn Venzke |
last post by:
I have an aspx page that is set up to copy backed-up DB files from a shared
directory to a local folder. For some reason, it is being denied access to
the network share. I have the web app running...
|
by: Aero |
last post by:
Hi,
My window application written in C# is throwing following exception
while connecting to one FTP location
The type initializer for System.Net.Sockets.Socket threw an exception
This exe is...
|
by: Anthony P. |
last post by:
Hello Everyone,
I am building an application and I need to walk the file system from
the root directory on down. I need to cover every single directory on
the system and all of their sub...
|
by: scheidel21 |
last post by:
I am writting a DB front end in VB.NET 2003 I have a form that displays
employee information it has a dataset loaded from the DB that also includes
tables for lookup in some comboboxes that are...
|
by: nygiantswin2005 |
last post by:
Hi
I am trying to resolve this bug that I have in this application.
The code is below. It will generate this Exception
System.UnauthorizedAccessException: Access to the path is denied.
at...
|
by: Nathan Sokalski |
last post by:
I am getting the list of subdirectories from a specified directory using
System.IO.Directory.GetDirectories(), and would like to get only
subdirectories that are not hidden or system directories. I...
|
by: Tom P. |
last post by:
I am having the following problem: I create a FileSystemWatcher and
wait for events. When the event does happen I refresh a
FileSystemInfo list and set properties accordingly (IsFile, IsDir,...
|
by: =?Utf-8?B?TWFuanJlZSBHYXJn?= |
last post by:
Hi,
I created a web service and hosted it in Windows Services. It is working
fine. Now I am trying to implement the X509 certificates for message layer
security. But it is throwing the following...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |