我创建了一个Azure时间触发器功能,我想和他一起读取一个Json文件.我确实安装了read-json和jsonfile包并尝试了两者,但它没有用.这是一个示例函数
module.exports = function (context, myTimer) {
var timeStamp = new Date().toISOString();
var readJSON = require("read-json");
readJSON('./publishDate.json', function(error, manifest){
context.log(manifest.published);
});
context.log('Node.js timer trigger function ran!', timeStamp);
context.done();
};
Run Code Online (Sandbox Code Playgroud)
这是错误的:
TypeError: Cannot read property 'published' of undefined
at D:\home\site\wwwroot\TimerTriggerJS1\index.js:8:29
at ReadFileContext.callback (D:\home\node_modules\read-json\index.js:14:22)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:365:13).
Run Code Online (Sandbox Code Playgroud)
Json文件与index.js位于同一文件夹中.我假设由于路径'./publishDate.json'而发生此错误,如果是这样,我应该如何键入有效路径?
如何清除 Azure Functions 中的 nuget 缓存?我们的 nuget 包发生了一些更改,但版本没有更改。(现在是dev里的包,现在不能改版本,应该是一样的)
我正在使用VS2017 Preview中用于Azure Functions项目的新工具,并将某些功能从Azure门户移植到了新项目中。
我正在绑定到Azure文档数据库-它工作正常,但是当我使用该DocumentDB属性时,我必须提供数据库名称作为第一个参数。
以我为例,现在是DEV数据库。但是当然会有其他环境-是否可以通过函数app的应用程序设置来获取数据库名称?
[FunctionName("TimerTriggeredFunction")]
public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, TraceWriter log,
[DocumentDB("my-db-DEV", "MyCollection")] IEnumerable<dynamic> inputDocuments)
Run Code Online (Sandbox Code Playgroud) 我有visual studio 2017 v2,我正在尝试安装Azure功能扩展.我尝试在新PC和旧PC上进行全新的vs安装.每次收到错误消息"由于无法解决的先决条件而无法将扩展安装到此产品".它没有告诉我它们是什么或我能做些什么来解决问题.我该如何解决这个问题?
我在 Azure 函数中使用相对较新的 ILogger(相对于 TraceWriter)选项,并尝试了解如何捕获日志。
这是我的功能:
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, ILogger log)
{
log.LogTrace("Function 1 {level}", "trace");
log.LogWarning("Function 1 {level}", "warning");
log.LogError("Function 1 {level}", "error");
return req.CreateResponse(HttpStatusCode.OK, "Success!!!!");
}
Run Code Online (Sandbox Code Playgroud)
当我查看服务器日志时,LogFiles 目录具有层次结构。
黄色突出显示的文件包含我的日志语句:
2017-08-19T13:58:31.814 Function started (Id=d40f2ca6-4cb6-4fbe-a05f-006ae3273562)
2017-08-19T13:58:33.045 Function 1 trace
2017-08-19T13:58:33.045 Function 1 warning
2017-08-19T13:58:33.045 Function 1 error
2017-08-19T13:58:33.075 Function completed (Success, Id=d40f2ca6-4cb6-4fbe-a05f-006ae3273562, Duration=1259ms)
Run Code Online (Sandbox Code Playgroud)
结构化目录此处不包含任何内容,但在我的真实功能应用程序目录中似乎有各种“codeddiagnostic”日志语句。
我应该在这里期待什么?最终,我希望有一个单一的接收器来记录我的所有应用程序组件,并全面利用结构化日志记录。
我不能在不使用C#实现(而不是CSX)中的[BlobAttribute]的情况下将blob类型的输入参数绑定到字符串/ TextReader.
我得到的错误是:
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.Harvester'.
Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'configReader' to type
TextReader. Make sure the parameter Type is supported by the binding. If
you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure
you've called the registration method for the extension(s) in your startup
code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
Run Code Online (Sandbox Code Playgroud)
function.config:
"bindings": [
{
"type": "timerTrigger",
"schedule": "0 */5 * * * *",
"useMonitor": true,
"runOnStartup": false,
"direction": "in",
"name": "myTimer"
},
{
"type": "blob",
"name": "configReader", …Run Code Online (Sandbox Code Playgroud) 我试图围绕我们应该如何构建Azure功能.
我喜欢构建响应事件的无服务器,紧凑,单功能应用程序的想法.
以下是我遇到的问题:
此时,我看到的唯一选择是将代码"复制并粘贴"到新的Azure Functions项目中,并在没有任何DI的情况下使用它.
这似乎违背了"最佳做法".那么除了创建单片代码或等到Azure Functions支持.NET Core和DI之外,还有什么解决方案.
我以为我可以使用面向.NET Framework的常规Azure Functions项目中的.NET Standard类库.毕竟,.NET Standard的想法是"标准化"事物.我在SO上开了几个帖子.我正在提供链接,以便您可以看到我遇到的问题:
在WebJob中使用.NET Core 2.0库定向.NET Framework 4.7
使用.NET Core和Ninject的WebJobs中没有无参数构造函数错误
PS我以前的帖子指的是WebJobs.这是B计划的方法,因为在支持.NET Core和DI等事情时,WebJobs似乎比Azure Functions领先半步.最后,我想构建一些可以使用我在.NET Standard 2中构建的类库的Azure函数.
此外,我之前的帖子提到我的类库以.NET Core 2.0为目标.从那时起,我将它们转换为.NET Standard 2,它实际上并没有太多用处.我这样做是为了让我真正符合.NET Standard 2.
我有一个计时器函数,每 12 小时运行一次,刷新 oAuth 令牌。由于某种原因,该函数反复运行多次,导致每 12 小时约有 3500 次调用。不确定它是否相关,但我已经在 Visual Studio 中用 c# 实现了该函数并部署到 azure。我的函数确实有一个到 azure blob 的输出绑定,用于写入刷新的令牌信息。我最初认为问题是因为我将函数实现为异步,但尽管删除了异步,问题仍然存在。
我正在使用Azure Functions构建一个非常轻量级的API,我关注的一件事是滥用这些功能.什么阻止某人敲击一种方法并导致我的成本升级?如果他们开始表现可疑,我有什么办法可以将IP地址列入黑名单吗?
我有最后的办法在表存储中查找IP,但我最好还是在它甚至使用它之前阻止IP,这可能吗?(通过编程)
缺口.
我希望能够调用我的Azure函数而不必指定键。该文档似乎表明将'authLevel'设置为匿名即可完成此操作:
authLevel:它确定需要哪些键(如果有的话)出现在请求上才能调用该函数。请参阅下面的使用键。该值可以是以下之一:
- 匿名:不需要API密钥。
- 函数:需要特定于函数的API密钥。如果未提供,则为默认值。
- admin:需要主密钥。
我的绑定是:
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "anonymous",
"webHookType": "genericJson",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
Run Code Online (Sandbox Code Playgroud)
但是,当我在没有键的情况下向函数发送请求时,会收到错误消息:
WebHook验证请求必须包含“代码”查询参数。
我在俯视什么?