naag
naag

Reputation: 431

Azure Functions Temp storage

When I try to save a file to the Temp storage in Azure Functions directory (D:\home\data\temp\response.pdf), I get the following error. Why can't I write to this directory?

mscorlib: Exception has been thrown by the target of an invocation. System: An exception occurred during a WebClient request. mscorlib: ***Could not find a part of the path 'D:\home\data\temp\response.pdf'.***
2017-09-19T07:05:24.353 Function completed (Failure, Id=3aa4b740-ba8a-465c-ad7c-75b38fa2a472, Duration=334ms)
2017-09-19T07:06:31  No new trace in the past 1 min(s).

Upvotes: 39

Views: 29998

Answers (4)

MindModel
MindModel

Reputation: 872

GetTempPath returns a path to a directory in the local file system, which you can use for temp files created by the Azure Function. It's fast, but there's not much space available to your function.

The HOME environment variable points to a mapped network drive. Your Azure Function can also read/write there, but this drive is mapped to an Azure Blob Storage account, so it's much slower than the GetTempPath directory. There is much more available space in the HOME directory.

Upvotes: 0

defines
defines

Reputation: 10534

I recommend using System.IO.Path.GetTempPath() as this will always give us a valid path for any given system.

Additionally, functions may execute multiple times simultaneously for a given instance, so it's best to ensure we have a unique path for each execution. Here's a simple example:

var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

Alternately, we can use System.IO.Path.GetTempFileName() which will additionally create the file before returning the full path and unique filename.

Upvotes: 48

Ivan Rosales
Ivan Rosales

Reputation: 61

I find a better choice. You can use System.IO.Path.GetTempFileName() this create a %userprofile%\Local\Temp\tmpE128.tmp file

Upvotes: 6

Tom Sun
Tom Sun

Reputation: 24569

According to the exception, it seems that D:\home\data\temp\ is not existing in your function project. Please have a try to check it with Azure Kudu tool(https://yourwebsiteName.scm.azurewebsites.net). If the path is not existing, please have a try to add the temp folder and try again.

We could get more info about Azure WebApp from the Azure Web App sandbox. More detail info about file structure on azure,please refer to this document.

Upvotes: 4

Related Questions