Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27414

File Permissions Error using load balancers

$
0
0
Hello everyone,
I have a problem with logging. I have a class I use to log events, in my ASP.net application, to a text file. The class seems to work fine. Complications arise, though, because we are using a load balancer. We run our app on two servers. If one server fails, the load balancer will switch the web application to the other server. I can also direct the browser to specify which server to view the application on.

The problem is that when I go to one server, the application can log just fine. But if i try to switch to the other server, I get this error:

Quote:

Exception Details: System.UnauthorizedAccessException: Access to the path '\\myServer-qa\plantshare\someFolder\myApp\Logs\2012_12_14.txt' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.
If i delete the file, which ever server creates it first will be fine but the other will fail. If i check the files permissions only the server that created it will have permission. Is this an issue with my code or IIS? Also, We use windows authentication. Here is the class I use to write:

Code:

Imports System.Net
Imports System.IO
Public Class logger
    Private _path As String
    Public Property path() As String
        Get
            Return _path
        End Get
        Set(ByVal value As String)
            _path = value
        End Set
    End Property

    Public Sub New(ByVal path As String)
        Me.path = path
    End Sub

    Private Function checkDir(ByVal path As String) As Boolean
        Dim dir As New DirectoryInfo(path)
        Dim exist As Boolean = True
        If Not dir.Exists Then
            Try
                dir.Create()
            Catch ex As Exception
                exist = False
            End Try
        End If
        Return exist
    End Function
    Private Function checkFile(ByVal path As String) As Boolean

        Dim myFile As New FileInfo(path)
        Dim exist As Boolean = True
        Dim objWriter As IO.StreamWriter
        Dim fs As FileStream

        If Not myFile.Exists Then
            Try
                fs = New FileStream(path, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.ReadWrite)
                objWriter = New System.IO.StreamWriter(fs)

                objWriter.Close()
                objWriter.Dispose()
                fs.Close()
                fs.Dispose()

            Catch ex As Exception
                exist = False
            Finally

            End Try
        End If

        Return exist
    End Function

    'updates file
    Public Sub Logger(ByVal filePath As String, ByVal Message As String, ByVal title As String, Optional ByVal stkTrace As String = "")
        Dim sw As StreamWriter
        Dim fs As FileStream
        Dim path As String
        Dim now As DateTime = DateTime.Now
        Dim today As String

        today = Date.Now.ToString("yyy/MM/dd")
        path = Me.path & today.Replace("/", "_") & ".txt"

        If checkFile(path) Then
            fs = New FileStream(path, FileMode.Append)
            sw = New StreamWriter(fs)
            Try
                sw.WriteLine("Title: " & title)
                sw.WriteLine("Message: " & Message)
                sw.WriteLine("StackTrace: " & stkTrace)
                sw.WriteLine("Date/Time: " & now.ToString("yyyy/MM/dd HH:mm:ss"))
                sw.WriteLine("================================================")
                sw.Flush()
            Catch ex As Exception
                Throw
            Finally
                sw.Close()
                fs.Close()

                sw.Dispose()
                fs.Dispose()
            End Try
        End If

    End Sub


End Class

Thanks

jason

Viewing all articles
Browse latest Browse all 27414

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>