Avatar billede bitmatic Nybegynder
05. juni 2008 - 18:47 Der er 5 kommentarer og
1 løsning

Serveren kan ikke lave et Scripting.FileSystemObject

Hej,

Jeg har periodiske problemer med at lave et Scripting.FileSystemObject. Jeg har lavet den siplest mulige asp-fil til at illustrere problemet. Den indeholder én linie:

<% Set fso = Server.CreateObject("Scripting.FileSystemObject") %>

Siden giver mig følgende fejl:

Server object error 'ASP 0177 : 800401f3'
Server.CreateObject Failed
/filesystemobject.asp, line 1
800401f3

I kan i øvrigt se filen på www.haslecf.dk/filesystemobject.asp

Fejlen er periodisk. Det virker et par dage, så fejler det et par dage... Tilsyneladende uden varsel.
Jeg ændrer ikke på noget som helst, og webhotellet mener heller ikke der bliver ændret noget på serveren, og har i øvrigt gjort mig opmærksom på, at jeg er den eneste med dette problem.

Mit problem er, at jeg simpelthen ikke kan se, at det kan være en fejl fra min side ???

Nogen der har inputs til hvad jeg kan gøre ???

mvh.
Jakob
Avatar billede thesurfer Nybegynder
05. juni 2008 - 18:58 #1
Måske er det ikke problemet, men du frigører ikke hukommelsen igen. Det kan måske være, at du er nået din maksimum med hensyn til hukommelsesforbrug..

Hver gang du bruger Set VariabelNavn = EtEllerAndet, skal du bruge Set VariabelNavn = Nothing.

Nedlæggelsen skal ske i omvendt rækkefølge af oprettelsen, når du bruger instanser der er afhængige af hinanden.

F.eks. mapper er afhængige af fso.. dvs:

- Opret fso-instans
- Opret mappe-instans
- Nedlæg mappe-instans
- Nedlæg fso-instans


Det gælder for alle instanser der oprettes med Set.
Avatar billede bitmatic Nybegynder
05. juni 2008 - 22:49 #2
Sorry... Mit eksempel var for simpelt :)

Den kode det egentlig drejer sig om, er i mit galleri. www.haslecf.dk/gallery.asp, Der nedlægger jeg også objekterne igen.

Koden er:
<%
Sub PrintFile(path)
  If (path<>"") Then
    Dim fso, f, filespec
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    filespec = Server.Mappath(path)
    Set f = fso.OpenTextFile(filespec,1)

    ' Læs linie for linie indtil slutningen af filen'
    Do While not f.AtEndOfStream
      Response.write f.ReadLine & "<br>"
    Loop

    f.Close
   
    Set f = nothing
    Set fso = nothing
  End If
End Sub

Sub ListFolder(path)
  Dim fs, folder, file, item, thumb_name, img_name, sub_folder, description

  Set fs = Server.CreateObject("Scripting.FileSystemObject")
  Set folder = fs.GetFolder(path)
 
  If (folder.SubFolders.Count >0) Then
    'Display a list of sub folders.'
    for each item in folder.SubFolders
      Set sub_folder = fs.GetFolder(path & "/" & item.Name)
      thumb_name = "images/folder.png"
      description = ""
      For each sub_item in sub_folder.Files
        If (Left(sub_item.Name,5) = "title") Then
          thumb_name = "images/" & sub_folder.Name & "/" & sub_item.Name
        Elseif (Left(sub_item.Name,11) = "description") Then
          description = "images/" & sub_folder.Name & "/" & sub_item.Name
        End If
      Next
      Response.Write("<div class=""gallery_dir"">" & vbCrLf)
      Response.Write("<div class=""gallery_header"">" & item.Name & "</div>" & vbCrLf)
      Response.Write("<a href=""gallery.asp?path=")
      Response.Write Server.URLEncode(item.Name)
      Response.Write("""><img src=""" & thumb_name & """ alt="""" border=""0""></a>" & vbCrLf)
      Response.Write("<div class=""gallery_description""><p>")
      PrintFile(description)
      Response.Write("</p></div>" & vbCrLf)
      Response.Write("</div>" & vbCrLf)
    next
  End If

  If (folder.Files.Count > 0) Then       
    For each item in folder.Files
      If (Left(item.Name,6) = "thumb_") Then
        thumb_name = "images/" & folder.Name & "/" & item.Name
        image_name = Replace(item.Name, "thumb_", "")
        Response.Write("<div class=""gallery_thumb""><a href=""showpic.asp?path=" & Replace(folder.Name, " ", "+") & "&name=" & image_name & """>")
        Response.Write("<img src=""" & thumb_name)
        Response.Write(""" alt="""" border=""0""></div>" & vbCrLf)
      End If
    Next 
  End If
 
  Set folder = nothing
  Set fs = nothing
End Sub
%>

I øvrigt er der meget delte meninger om hvorvidt det er nødvendigt at sætte variablerne til nothing. Hvis ikke man gør det vil variablerne automatisk gå ud af scope når siden er færdig med at eksekvere, og de vil så blive frigivet af asp serveren uden man behøver at blande sig.
Avatar billede thesurfer Nybegynder
09. juni 2008 - 19:33 #3
Dit script ser ud til at virke igen..
Avatar billede bitmatic Nybegynder
09. juni 2008 - 21:39 #4
hehe.. ja. Det er temmeligt ustabilt.

Jeg har faktisk opgivet lidt overfor den nuværende host. Tror ikke de er i stand til at løse det, så jeg har købt et andet webhotel, og skifter over så snart det andet er oppe at køre.
Avatar billede thesurfer Nybegynder
03. august 2008 - 20:32 #5
Hvis alt er OK nu, kan du bare smide et svar, markere det og derefter klikke på Accepter-knappen for at afslutte spørgsmålet..
Avatar billede bitmatic Nybegynder
03. august 2008 - 23:30 #6
lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester