c# - Azure 函数 - 函数应该写在静态类中吗

标签 c# azure azure-functions

我开始尝试 Azure 功能。我使用的是 Visual Studio 2017 预览版 15.3。当我右键单击创建的 Azure Functions 项目,然后选择“添加>新建项...>Azure Function”时,Visual Studio 生成的默认模板是一个带有 public 的 public static class 。静态异步任务方法(函数)。

该类是否需要是静态的(我将其更改为非静态,它似乎可以工作)?这是 Azure 函数的最佳实践吗?如果是这种情况,使用非静态类来保存 Azure Function 方法可能会出现什么问题?

最佳答案

一如既往,这取决于情况。在保持函数类静态的其他答案中,我想介绍另一种情况,其中非静态类可能会有所帮助。 请查看:Functions dependency injection 。如果您想在函数中使用 DI,则没有简单的方法可以使用静态类来实现此目的,因为它不能具有带参数的实例构造函数。所以你不能写这样的东西:

public class HttpTrigger
{
    private readonly IMyService _service;
    private readonly HttpClient _client;

    public HttpTrigger(IMyService service, IHttpClientFactory httpClientFactory)
    {
        _service = service;
        _client = httpClientFactory.CreateClient();
    }

    [FunctionName("GetPosts")]
    public async Task<IActionResult> Get(
        [HttpTrigger(AuthorizationLevel.Function, "get", Route = "posts")] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        var res = await _client.GetAsync("https://microsoft.com");
        await _service.AddResponse(res);

        return new OkResult();
    }
}

关于c# - Azure 函数 - 函数应该写在静态类中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45168659/

相关文章:

sockets - Jmeter错误: Java.net.SocketException : Connection reset at java.net.SocketInputStream.read(未知来源)位于

azure - 无法获取访问 token 。 'AADSTS500011: The resource principal named ' xxx' 未在租户-tenantid 中找到

azure - 在 Azure Functions 中,我可以将 C# HttpTrigger 与 Python HttpTrigger 结合起来吗

c# - Visual Studio 2015 表示 'cast is redundant' 。为什么?

c# - 错误,尝试 ParseExact 时间字符串时,字符串未被识别为有效的 DateTime

c# - Azure 搜索 : Only the whitespace should be a word delimiter

azure - 向 ACS 上的 Kubernetes 集群添加更多节点

azure - 在azure函数应用程序中使用c#代码覆盖host.json文件的functiontimeout

c# - IsAssignableFrom 和 GetInterface 之间有什么区别?

c# - 使用 Forms Load 事件将字符串写入面板