Search code examples
c#azureazure-storageazure-functions

Is it possible to read File from same folder where Azure function exists


In my Azure C# function I need to read a .txt file. I make the .txt file in Visual studio and set it to "copy Always".

Now I am using this code to read the file

var dir = System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetEntryAssembly().Location);

var path = System.IO.Path.Combine(dir, "twinkle.txt");

this code doesn't work. When I open the folder which is the value of dir. It lead me to this directory ""C:\Users{username}\AppData\Local\Azure.Functions.Cli\1.0.9""

How I can store a simple txt file in Azure function. Or I need Azure Storage for this.

Anything else I can do to get this done.

Update for showing file copied

enter image description here


Solution

  • Here is how to get to the correct folder:

    public static HttpResponseMessage Run(HttpRequestMessage req, ExecutionContext context)
    {
        var path = System.IO.Path.Combine(context.FunctionDirectory, "twinkle.txt");
        // ...
    }
    

    This gets you to the folder with function.json file. If you need to get to bin folder, you probably need to go 1 level up, and then append bin:

    // One level up
    Path.GetFullPath(Path.Combine(context.FunctionDirectory, $"..{Path.DirectorySeparatorChar}twinkle.txt"))
    
    // Bin folder
    Path.GetFullPath(Path.Combine(context.FunctionDirectory, $"..{Path.DirectorySeparatorChar}bin{Path.DirectorySeparatorChar}twinkle.txt"))