.net Azure函数读取自定义文件
我正在创建一个带有HTTP触发器的通用azure函数。我有类似这样的用例 客户端-->函数-->API 我的函数得到一个特定的输入,它操纵结构,然后将其发送到另一个API进行进一步处理。 为此,我创建了API所需的相当静态的配置设置,并将其存储为JSON格式。我会将其反序列化为一个对象,以传递给API。但是,我无法加载此JSON,因为似乎找不到该文件。此文件是在项目创建时在根目录中创建的 我试图验证可用的文件,但在服务器上看不到JSON。我尝试在中打印文件和目录列表.net Azure函数读取自定义文件,.net,azure,azure-functions,.net,Azure,Azure Functions,我正在创建一个带有HTTP触发器的通用azure函数。我有类似这样的用例 客户端-->函数-->API 我的函数得到一个特定的输入,它操纵结构,然后将其发送到另一个API进行进一步处理。 为此,我创建了API所需的相当静态的配置设置,并将其存储为JSON格式。我会将其反序列化为一个对象,以传递给API。但是,我无法加载此JSON,因为似乎找不到该文件。此文件是在项目创建时在根目录中创建的 我试图验证可用的文件,但在服务器上看不到JSON。我尝试在中打印文件和目录列表 Environment.Cu
Environment.CurrentDirectory
目前,我使用了VS17中的打包部署模式。这个函数是V1,框架是461
替代解决方案
这不是一个应用程序设置,因此我不想把它放在那里。它也是一个嵌套的JSON结构。我想知道是否有比我上面提到的更好的方法来实现这一点?在执行函数处理逻辑时,我希望避免由于某些依赖关系而不得不移动到V2。我正在从事类似的项目,必须使用不同的json文件从中读取数据。因此,经过几次尝试后,我们能够上传/读取/写入与函数文件夹位于同一文件夹中的文件。基本上,您可以使用kudu或function files editor将文件上载到与azure函数相同的文件夹中 下面是将从与函数相同的文件夹中读取的代码片段
var path = Path.Combine(context.FunctionDirectory, "filename.json");
dynamic fileData = await ReadAndDisplayFilesAsync(path , context);
我创建了以下函数来读取文件:
public static async Task<dynamic> ReadAndDisplayFilesAsync(string fileName, Microsoft.Azure.WebJobs.ExecutionContext context)
{
char[] buffer;
using (var sr = new StreamReader(fileName))
{
buffer = new Char[(int)sr.BaseStream.Length];
await sr.ReadAsync(buffer, 0, (int)sr.BaseStream.Length);
}
string bufferAsString = new String(buffer);
dynamic bufferAsStringJson = JsonConvert.DeserializeObject(bufferAsString);
return bufferAsStringJson;
}
感谢您提供的执行上下文提示。我在context.FunctionAppDirectory中找到了我的JSON文件。
Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext context)