Finding ASP.NET temporary directory

R

Rik Hemsley

Hi,

I am looking for a way to discover the path to the ASP.NET temporary
directory, which is called something like 'Temporary ASP.NET Files'.

From within an ASP.NET application, I can get the path using
IO.Path.GetTempPath(), but I need to do so from outside the application.
I am currently using a web service for this, but this is a less than
optimal solution: if the web service is unable to start, I don't get the
full error message from IIS.

Is there any way to ask ASP.NET what its temporary directory is?

Thanks,
Rik
 
J

Juan T. Llibre

The temp directory is hard-coded.

For .Net Framework 2.0 :
bootdrive:\%windir%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

For .Net Framework 1.1 :
bootdrive:\%windir%\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files

This is a real hack, but it will retrieve the Temp directory path programmatically :

In global.asax :

Sub Application_OnStart()
Dim MyArray() As String = Split(AppDomain.CurrentDomain.DynamicDirectory, "\")
Application("TEMP_DIR") = (MyArray(0).ToString() & "/" & MyArray(1).ToString() & "/" _
& MyArray(2).ToString() & "/" & MyArray(3).ToString()) & "/" & MyArray(4).ToString() & "/" _
& MyArray(5).ToString())
End Sub

The path to the machine's ASP.NET Temporary Files directory
is now contained by Application("TEMP_DIR").

You can probably parse MyArray(), to extract the temp dir,
in a far simpler way, but I didn't have the time to do that for you right now.

What you need to do is strip off MyArray(6), MyArray(7) and MyArray(8) from the
string array created by Split(AppDomain.CurrentDomain.DynamicDirectory, "\").
 
R

Rik Hemsley

Juan said:
The temp directory is hard-coded.

Sorry, I meant the 'other' temp directory, not the 'Temporary ASP.NET
files' one. I'm not completely sure what this other directory is used
for, but I know that I need to give write access to it to the user who
the web application runs as, or I get 'permission denied' errors.

When a web _service_ is running, IO.Path.GetTempPath() returns (for me):

C:\DOCUME~1\RIK\ASPNET\LOCALS~1\Temp\

RIK\ASPNET seems to be name-of-machine\ASPNET, rather than username\ASPNET.

Looking at it again, I think it might be quite easy to work out what
this path will be, without having to be a web service, so I'll give it a
go and see if I can figure out a correct implementation.

BTW for anyone wanting to get the 'Temporary ASP.NET files' directory
from outside the web application, I do it like this:

String.Format _
( _
"{0}\Microsoft.NET\Framework\v{1}.{2}.{3}\Temporary ASP.NET Files", _
Environment.GetEnvironmentVariable("windir"), _
Environment.Version.Major, _
Environment.Version.Minor, _
Environment.Version.Build _
)

Cheers,
Rik
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,020
Latest member
GenesisGai

Latest Threads

Top