小编Jer*_*Liu的帖子

使用环境变量配置Azure功能的LogLevel

根据Azure文档,Functions V2使用.NET Core日志记录筛选器层次结构进行配置。

在下面的示例中,将ILogger的实例注入到该函数的Run方法中。

[FunctionName("MyFunction")]
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger logger, ExecutionContext executionContext)
{
    logger.LogInformation("I don't want to see this in production!"));
}
Run Code Online (Sandbox Code Playgroud)

检查ILogger对象时,每个LoggerInformation元素的MinLevel为null,这似乎记录了所有级别。

在生产中,我只想以错误级别登录。我希望能够使用环境变量进行配置,但是找不到任何说明如何实现此目的的文档。我尝试添加以下环境变量无效:

"logging__logLevel__Default: "Error" 
Run Code Online (Sandbox Code Playgroud)

azure asp.net-core azure-functions

6
推荐指数
3
解决办法
1246
查看次数

Visual Studio 2017:Azure 函数单元测试和 local.settings.json 问题

我正在 Visual Studio 2017 社区开发 Azure Functions 后端应用程序。这几乎没问题,但现在我正在尝试编写单元测试,并且 - 总的来说 - 它工作正常,但不是一切,因为它不从 local.settings.json 文件中获取值。

我有一个包含以下代码的类:

using System;

namespace Includes
{
    public static class VariablesGlobales
    {
        public static int MaximoLicenciasAsignar
        {
            get { return Convert.ToInt32(Convert.ToString(Environment.GetEnvironmentVariable("MAXIMO_LICENCIAS_ASIGNAR"))); }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当函数的执行通过 Visual Studio 或 CLI 执行时,此代码工作正常,但是,当我执行单元测试时,无论我尝试什么,属性 VariablesGlobales.MaximoLicenciasAsignar 始终为零。

正在将 local.settings.json 文件复制到 bin 文件夹中,并正确更新。

实际上,我不知道如何修复它,导致这个问题不允许我进行完整测试,我的目标是在 VSTS 中配置 CI 和 CD,但是没有完整的单元测试实现,我不能.

任何建议将不胜感激。非常感谢。

问候,

罗德里戈

unit-testing azure azure-functions

5
推荐指数
0
解决办法
754
查看次数

Azure 表存储 InsertOrMerge

我有一个包含一些数据的 Azure 表存储。我需要为表中的所有记录更新一个属性。我知道每个项目的分区键和行键。但是可能是这样我的 CSV 文件中有新项目。

我需要做的是:

  • 如果在基于 ParitionKey 和 RowKey 的表存储中找到一项,我想更新一个属性:名称。
  • 如果在表中找不到某个项目,则必须插入它,但我有更多的属性需要填写:姓名、电子邮件、地址

我正在尝试使用 InsertOrMerge,但出现 Etag 异常,如果未找到该项目并且需要插入,我该如何设置更多属性?

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

        CloudTableClient cloudTableClient = storageAccount.CreateCloudTableClient();

        CloudTable ct = cloudTableClient.GetTableReference("mytable");



             var item = new Item()
             {
                 PartitionKey = "PARTITIONID",
                 RowKey = "ROWID",                
                 Name = "DEMO",                     
             };

        TableOperation to = TableOperation.Merge(code);

        var result = await ct.ExecuteAsync(to);
Run Code Online (Sandbox Code Playgroud)

c# azure azure-storage azure-table-storage

5
推荐指数
1
解决办法
2683
查看次数

QueueTriggerAttribute缺失

我创建使用的天青功能3.0.0-beta8的版本 Microsoft.Azure.Functions,Microsoft.Azure.Functions.CoreMicrosoft.Azure.WebJobs.Extensions的NuGet包,并且它不解决QueueTriggerAttribute方案-这已经被弃用/移动到一个新的图书馆吗?

我在Azure函数中使用此触发器安装的内容并不是很明显.

c# azure azure-storage azure-functions

5
推荐指数
1
解决办法
1714
查看次数

如何从Azure函数进行https调用?

我正在尝试使用 nodeJS 创建 Azure 函数,但是当我调用 https API 时,我收到一条错误消息。

是否可以从 azure 函数进行 HTTPS 调用?

这是我的代码

const https = require('https');
const querystring = require('querystring');

module.exports = async function (context, req) {

    if (req.query.accessCode || (req.body && req.body.accessCode)) {

        var options = {
            host: 'api.mysite.com',
            port: 443,
            path: '/oauth/access_token',
            method: 'POST'
        };

        var postData = querystring.stringify({
            client_id : '1234',
            client_secret: 'xyz',
            code: req.query.accessCode
        });


        var req = https.request(options, function(res) {
            context.log('STATUS: ' + res.statusCode);
            context.log('HEADERS: ' + JSON.stringify(res.headers));

            res.on('data', function (chunk) {
                context.log('BODY: …
Run Code Online (Sandbox Code Playgroud)

azure node.js azure-functions

5
推荐指数
1
解决办法
4624
查看次数

为什么Azure应用设置编码会给我带来错误的字符?

我遇到了天青的appsettings编码问题。

我有一个部署到应用程序服务中的node.js应用程序。使用process.env调用环境变量时,这些值以错误的编码形式出现。我曾期望使用“ utf8”编码,该编码支持诸如“ñ”,“ó”,“í”,“á”,“é”,“ú”之类的字符,但取而代之的是,我得到诸如“¢”,“£”之类的字符”,“”等。

你可以帮帮我吗?

谢谢!

encoding azure node.js azure-web-sites azure-web-app-service

5
推荐指数
1
解决办法
227
查看次数

“Hello-World”node.js/express 在本地工作,但不在 Azure Web App 上工作

我有以下 node.js/express 文件index.js

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var port = process.env.PORT || 1337;
app.listen(port);
console.log("Server running at http://localhost:%d", port);
Run Code Online (Sandbox Code Playgroud)

当我在本地运行服务器并在浏览器上访问http://localhost:1337/时,我得到“Hello World!” 正如预期的那样。我在 Azure Web App 上部署了 index.js,但当我尝试访问它时,收到“ERR_CONNECTION_TIMED_OUT”。

我究竟做错了什么?

我已经在 Azure 上安装了 Express。

azure node.js express azure-web-app-service

5
推荐指数
1
解决办法
3544
查看次数

Azure功能 - 此平台不支持System.Data.SqlClient

insert在我的azure函数中运行以下代码到azure sql server 2014数据库:

    private static void Command(SqlConnection sqlConnection, string query)
    {
        var sqlCommand = new SqlCommand(query, sqlConnection);

        try
        {
            sqlConnection.Open();
            sqlCommand.ExecuteNonQuery();
        }
        finally
        {
            sqlConnection?.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

并获得以下异常:

此平台不支持System.Data.SqlClient

以下是它使用的依赖链:

在此输入图像描述

如何从我的应用程序运行简单的sql命令?我究竟做错了什么?

c# azure .net-core azure-functions

5
推荐指数
1
解决办法
2357
查看次数

如何在Azure Function v2(核心)中静态使用ConfigurationBuilder?

将Azure Function从v1移植到v2时,使用配置管理器读取local.settings.json的方式有所变化。

以前,我使用以下代码在功能实例之间启用redis连接池:

public static class Redis
{
    /// <summary>
    /// Initializes the REDIS connection.
    /// </summary>
    private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        return ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings["CacheConnection"]);
        });

    public static IDatabase Database => LazyConnection.Value.GetDatabase();
}
Run Code Online (Sandbox Code Playgroud)

但是在v2中,ConfigurationManager不再可用,我们必须使用类似以下内容:

new ConfigurationBuilder()
        .SetBasePath(context.FunctionAppDirectory)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();
Run Code Online (Sandbox Code Playgroud)

但是,由于它要求context仅在函数运行时可用,因此我们无法创建在所有函数之间共享的静态类。是否可以在Azure Functions v2中静态读取app.settings.json?

c# azure .net-core azure-functions

5
推荐指数
1
解决办法
1176
查看次数

在 Visual Studio 中调试 Azure Function 时创建的日志文件在哪里

我有一个在 VS 中执行的 Timer Azure 函数。右键单击 Azure Function 项目并进行调试。该函数有一个 ILogger 日志。

检查日志对象,我可以看到它有两个记录器

  • Azure.Functions.Cli.Diagnostics.ColoredConsoleLogger
  • Microsoft.Azure.WebJobs.Script.Diagnostics.FileLogger

我还可以看到 RootLogPath 是 %temp%\LogFiles\Application\Functions。

然而,在那个位置只有一个“主机”文件夹。我希望找到一个带有日志文件的“功能”文件夹。

我需要以某种方式启用文件记录器吗?我想念什么吗?

azure azure-functions azure-functions-runtime

4
推荐指数
1
解决办法
2581
查看次数