Question

Using File System Object not working properly

Asked by: icompass

am experiencing a problem using certain methods of the ASP file system object.  It seems I can add files no problem, but if i try to edit them, or delete them, or even just access the files directly, my page just hangs and nothing happens.  At this point, I have to close all my browsers, and stop and start the site, or it will not respond at all.

I am running my site in IIS 5.0 running on Windows XP (I have to test on my development machine, then push live to W2K server)

Here is a sample of the code I am using:



     set objFSO = Server.CreateObject("Scripting.FileSystemObject")
     if objFSO.FileExists(Server.MapPath(strFilePath)) then
       Response.Write "about to try to delete: " & strFilePath & " <-- can't delete file"
        objFSO.DeleteFile strFilePath
     end if


This is the output i get:

about to try to delete: files/{55572635-9AD9-4986-B820-493024D88931}_3eyes.jpg

So i know the file exists, it is getting into the loop.

However, all that happens it the page hangs, and will not continue loading at all.  I need to close the browser, and stop and start the default website in IIS to get the page to load again.

The same thing happens when i try to rename a file, here is a sample of that code:

       set objFSO = Server.CreateObject("Scripting.FileSystemObject")
       if objFSO.FileExists(Server.MapPath(strFilePath)) then
         Response.Write "about to try to edit:<BR>" & Server.MapPath(strFilePath)
         set objFile = objFSO.GetFile (Server.MapPath(strFilePath))
       end if

I have previously asked this question here:

http://www.experts-exchange.com/Web/Q_20727106.html

I accepted the answer, as it made the problem go away.

BUT, then i went for lunch, and accepted one of microsofts XPs updates, and the problem is back.  And worse yet, running the fix again did not help.  I was convinced that it must be something to do with the permissions on the file and i tried changing them, the ones for the folder, permissions in IIS etc, and rebooted, and it was working for a while again, but then later stopped again, with no changes to the code.

A coworker tried it on his machine, and it was working for him as well for a while, then suddenly stopped for him as well (i'm not sure if he downloaded the update or not)

There are two other solutions suggested in the previous question:

-put the code in a .vbs file, and use create instead of server.createobject to make the FSO.
I don't think this is the answer, simply because i have done this many times using just ASP files, there should be no problem.  Also, I'm writing a class, and i'd like it all to be encapsulated all within one file.

-use some error trapping to catch the error.
I don't think this is the solution, because my page is not even giving an error, or getting to the delete itself for that matter.  It simply stops responding on the line:

strFilePath = Server.MapPath("/files/{541BB8D5-BC0B-4537-9620-19F67275CAAA}_abt.jpg")

I need to access this file to physically delete it.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2003-09-06 at 10:19:21ID20730995
Tags

file

,

system

,

object

Topic

Miscellaneous Web Development

Participating Experts
6
Points
500
Comments
13

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. encapsulation
    what is encapsulation in java ?
  2. To FSO or not to FSO
    Zero-point question to discuss when to use FSO and when not to (possibly never, for one or the other!)

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: rolftollerudPosted on 2003-09-06 at 15:42:06ID: 9303064

Do you clear the file system object properly?
At the end of the function put,
Set objFSO = Nothing
 

 

by: sybePosted on 2003-09-07 at 00:14:52ID: 9304069

if the image is being displayed in a browser, then IIS might lock it for some time after someone has viewed it.

 

by: webwomanPosted on 2003-09-07 at 00:56:12ID: 9304147

Does it have to be named that? The brackets might be messing it up.

 

by: rdcproPosted on 2003-09-07 at 10:56:51ID: 9305485

This is a bit strange, but MSDN shows a slightly different way to delete...maybe this is a typo, maybe not.  I don't have XP here, so I can't test this, but they show it as the Delete method of the file object, not the file system object.  So you use GetFile to get a reference to the file itself, then call the delete method on that file object:

Sub ManipFiles
   Dim fso, f1, f2, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
   Response.Write "Writing file <br>"
   ' Write a line.
   f1.Write ("This is a test.")
   ' Close the file to writing.
   f1.Close
   Response.Write "Moving file to c:\tmp <br>"
   ' Get a handle to the file in root of C:\.
   Set f2 = fso.GetFile("c:\testfile.txt")
   ' Move the file to \tmp directory.
   f2.Move ("c:\tmp\testfile.txt")
   Response.Write "Copying file to c:\temp <br>"
   ' Copy the file to \temp.
   f2.Copy ("c:\temp\testfile.txt")
   Response.Write "Deleting files <br>"
   ' Get handles to files' current location.
   Set f2 = fso.GetFile("c:\tmp\testfile.txt")
   Set f3 = fso.GetFile("c:\temp\testfile.txt")
   ' Delete the files.
   f2.Delete
   f3.Delete
   Response.Write "All done!"
End Sub

Regards,
Mike Sharp

 

by: icompassPosted on 2003-09-08 at 08:37:24ID: 9310166

"Do you clear the file system object properly?"

Yes I do.

"if the image is being displayed in a browser, then IIS might lock it for some time after someone has viewed it."

Good Suggestion.  however, i came in on monday morning, and tried, it and it still locks up on the delete.  if this was the case (the file was locked), how would i go about forcing IIS to unlock the file?  Or at least trap for the error anyway, i can't just have the page hang if someone tries to delete an image that was looked at recently.  

Another thing that might happen is the file might be locked after uploading it.  I'm doing an upload using the dundas upload component (which is working elsewhere for me), and making sure to release all resources using "set objFSO = nothing" etc at the end of the process, so I'm not sure how to determine if it's a locked file or not.

"Does it have to be named that? The brackets might be messing it up."

It doesn't HAVE to be named that, but it's very convenient to do so.  The Dundas upload object generates a unique ID for saving files, so nothing is overwritten when files of the same name are uploaded.  The unique ID starts with the { and ends with }, and i have coded to account for that.  I have this same system working on another site, and i am able to rename, delete, copy etc with the files, so i don't think that could be it.

"This is a bit strange, but MSDN shows a slightly different way to delete..."

Yes, I have seen this as well, the delete can be performed on the object itself, or by the FSO.

Is there a reason you would use one or the other?  Seems cleaner to me to use the FSO.  In any case, the page crashes anyway, if i try to do it the other way, as soon as it hit's the line:

set objFile = objFSO.GetFile (Server.MapPath(strFilePath))

which would be neccesary to delete the file using the alternate method.


Further information on the problem:  I think there must be something not being closed properly, as my IIS is now not working.  I tried accessing the page again, and i got an IIS error saying there were too many users connected.   I tried stopping and starting the site (as i need to each time it hangs), and that didn't work, so i tried the web services, and got  a message like "web services could not be stopped in a timely manner".  Then i tried to stop and start the site again, and got an error "the requested control is not valid for this service".  I tried actually restarting the IIS program, and my is flagged with an error now and will not respond at all.

So, i guess it's time for a reboot, and a complete check to make sure all objects and connections are closed.

I would still like to know why my page just hangs when trying to access the file though.

 

by: icompassPosted on 2003-09-08 at 08:40:08ID: 9310181

hmm..  just found something else:

why to use the FSO instead of the File:

DeleteFile
FSO.DeleteFile filename[,forceReadOnlyDelete]
 
Description
Deletes filename, which can contain wildcards (only the filename, not folder names).An error occurs if the filename is not found. [forceReadOnlyDelete] will force the file to be deleted if it's readonly.

http://www.sloppycode.net/fso/?m=56

<%
'***************** DeleteFile
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile "C:\afilename.*",true
' This deletes all files called "afilename", regardless of extension, and even if they are readonly files.
Set fso = Nothing
%>

Maybe this will help solve my problem, i'll try after the reboot.

 

by: abuimadPosted on 2003-09-08 at 10:20:06ID: 9310718

icompass,
It sounds like you're having these issues because insuffient NTFS permissions on the folder containing the file to be deleted.
Note: I'm taking about NTFS security permissions not the permissions from the IIS management console.

To view the NTFS permissions, open Windows Explorer, right-click on the folder, select propertis, then click the security tab (if you don't see the security tab on XP, go control panel->folder options->View Tab scroll down the list and uncheck use simple file sharing).

From the secuirty tab you should see all the permission.
Add the following permission for now (just for testing):
click the add button, type in everyone, then click ok. Check the allow Full Control check box. Then click apply (don't close the properties sheet yet)
click on advanced button, then select Replace permissions on child objects, click ok on the advanced screen, then ok on the properties sheet.

Try to run your page, if it works post back, and I'll tell what users you need to give full control permission to on the live site (cuz you don't want to give everyone full control on a live server).

Hope this helps

 

by: icompassPosted on 2003-09-08 at 11:27:55ID: 9311036

Yes, I have already tried this as well.  it's the IUSR_[computer name] account that needs read and write permissions.  This was working for a while, but stopped.  So i gave full control to everyone, and that worked for a while too, and then stopped.  I made sure to propagate to all the child objects, and even gave full permissions to the entire innetpub root folder.

Still, *intermittently* i get this problem.  

 

by: abuimadPosted on 2003-09-08 at 11:51:04ID: 9311213

check if the file you're deleting has the read-only attributte set. If so you need to pass the force parameter to the DeleteFile method like this:

objFSO.DeleteFile strFilePath, Ture

 

by: icompassPosted on 2003-09-08 at 11:53:45ID: 9311230

Thanks, i had noted that already.

 

by: abuimadPosted on 2003-09-08 at 12:00:20ID: 9311296

sorry, didn't notice that........

 

by: sammuraiPosted on 2003-09-12 at 18:29:20ID: 9350178

Hi all
I had the same problem...after trying many things concerning IIS/NT Permissions, I found that the problem was in...
Norton Anti-Virus Enable Script Blocking...

If you have Norton, uncheck Enable Script Blocking and FSO will work fine :)

B.

 

by: icompassPosted on 2003-09-15 at 08:31:01ID: 9363725

Yes, that's correct, the problem was in Norton AV, we found that 3 days ago, but i am awarding you the points anyway.

funny thing was, a lot of the time it would work, but sometimes it would hang.  doesn't make me too confident of the script blocking abilities of NAV, if it only occasionally blocks them!

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...