This is the simplest code to accomplish this task.
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
public static IActionResult Run(HttpRequest req, out string outputBlob)
{
outputBlob = "This is a Blob content";
return new OkResult();
}
The input and output parameters are specified in the function.json file and are additionally presented graphically in the Integration tab.
function.json file content:
{"bindings":[{"authLevel": "ANONYMOUS",
"name": "req",
"type": "httpTrigger",
"direction": "in",
"methods": ["get","post"]
},{
"name": "$return",
"type": "http",
"direction": "out"
},{
"name": "outputBlob",
"direction": "out",
"type": "blob",
"path": "outcontainer/{rand-guid}",
"connection": "AzureWebJobsStorage"
}]}
Integration tab content:

local.settings.json file content
{"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet" }}
The function can be extended by adding logging and reading data from the request.
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System;
public static IActionResult Run(HttpRequest req, out string outputBlob, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
outputBlob = $"This Blob was created by HttpTrigger1 because at {DateTime.Now} request was sent to: {req.Host}";
return new OkResult();
}