运行 azure 函数时 HttpRequest 为 null

HttpRequest is null when I run an azure function

提问人:Faouzeya 提问时间:11/3/2023 更新时间:11/3/2023 访问量:80

问:

我想在 c# 中使用 AzureFunctions 将文件上传到 azure blob 存储。

所以这是我的 azure 函数:

public static class AppartementFunc
{

    [Function("AppartementFunc")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log)
    {
        string Connection = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
        string containerName = Environment.GetEnvironmentVariable("ContainerName");
        Stream myBlob = new MemoryStream();
        var file = req.Form.Files["File"];
        myBlob = file.OpenReadStream();
        var blobClient = new BlobContainerClient(Connection, containerName);
        var blob = blobClient.GetBlobClient(file.FileName);
        await blob.UploadAsync(myBlob);
        return new OkObjectResult("file uploaded successfylly");
    }
}

我试图像这样从邮递员那里测试这个功能:

enter image description here

但是这一行会触发一个错误:var file = req.Form.Files["File"]

`System.NullReferenceException: 'Object reference not set to an instance of an object.'

req was null.`

我不知道为什么HttpRequest请求是NULL ! 谁能帮我解决这个问题?

C# .net-core azure-functions

评论

0赞 DavidG 11/3/2023
您能否显示确切的错误消息,包括堆栈跟踪?它真的说“req 是 null”吗?
0赞 Faouzeya 11/3/2023
是的,它是 null,我验证了调试 req 始终为 null。
0赞 Moho 11/3/2023
是否使用独立辅助角色托管模型?什么版本的 .NET?
0赞 Faouzeya 11/3/2023
我正在使用 .NET 7.0 隔离
0赞 Moho 11/3/2023
@Hiba这么认为的;你不能直接使用。请看下面的答案HttpRequest

答:

0赞 Moho 11/3/2023 #1

我的猜测是,您使用的是 Azure Functions“进程内”托管模型的代码,而应用程序实际上是通过“独立工作线程”模型托管的。

对于 Azure Functions 独立辅助角色托管模型,参数应为 类型,HTTP 响应返回类型应为HttpTriggerHttpRequestsDataTask<HttpResponseData>

进程内和独立工作模型之间的差异

在独立工作进程中运行 C# Azure Functions 的指南

评论

0赞 Faouzeya 11/6/2023
有 谢谢,现在我明白了