根据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) 我正在 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,但是没有完整的单元测试实现,我不能.
任何建议将不胜感激。非常感谢。
问候,
罗德里戈
我有一个包含一些数据的 Azure 表存储。我需要为表中的所有记录更新一个属性。我知道每个项目的分区键和行键。但是可能是这样我的 CSV 文件中有新项目。
我需要做的是:
我正在尝试使用 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) 我创建使用的天青功能3.0.0-beta8
的版本 Microsoft.Azure.Functions
,Microsoft.Azure.Functions.Core
和Microsoft.Azure.WebJobs.Extensions
的NuGet包,并且它不解决QueueTriggerAttribute
方案-这已经被弃用/移动到一个新的图书馆吗?
我在Azure函数中使用此触发器安装的内容并不是很明显.
我正在尝试使用 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) 我遇到了天青的appsettings编码问题。
我有一个部署到应用程序服务中的node.js应用程序。使用process.env调用环境变量时,这些值以错误的编码形式出现。我曾期望使用“ utf8”编码,该编码支持诸如“ñ”,“ó”,“í”,“á”,“é”,“ú”之类的字符,但取而代之的是,我得到诸如“¢”,“£”之类的字符”,“”等。
你可以帮帮我吗?
谢谢!
encoding azure node.js azure-web-sites azure-web-app-service
我有以下 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。
我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命令?我究竟做错了什么?
将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?
我有一个在 VS 中执行的 Timer Azure 函数。右键单击 Azure Function 项目并进行调试。该函数有一个 ILogger 日志。
检查日志对象,我可以看到它有两个记录器
我还可以看到 RootLogPath 是 %temp%\LogFiles\Application\Functions。
然而,在那个位置只有一个“主机”文件夹。我希望找到一个带有日志文件的“功能”文件夹。
我需要以某种方式启用文件记录器吗?我想念什么吗?
azure ×10
c# ×4
node.js ×3
.net-core ×2
asp.net-core ×1
encoding ×1
express ×1
unit-testing ×1