Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Azure函数读取自定义文件_.net_Azure_Azure Functions - Fatal编程技术网

.net Azure函数读取自定义文件

.net Azure函数读取自定义文件,.net,azure,azure-functions,.net,Azure,Azure Functions,我正在创建一个带有HTTP触发器的通用azure函数。我有类似这样的用例 客户端-->函数-->API 我的函数得到一个特定的输入,它操纵结构,然后将其发送到另一个API进行进一步处理。 为此,我创建了API所需的相当静态的配置设置,并将其存储为JSON格式。我会将其反序列化为一个对象,以传递给API。但是,我无法加载此JSON,因为似乎找不到该文件。此文件是在项目创建时在根目录中创建的 我试图验证可用的文件,但在服务器上看不到JSON。我尝试在中打印文件和目录列表 Environment.Cu

我正在创建一个带有HTTP触发器的通用azure函数。我有类似这样的用例

客户端-->函数-->API

我的函数得到一个特定的输入,它操纵结构,然后将其发送到另一个API进行进一步处理。 为此,我创建了API所需的相当静态的配置设置,并将其存储为JSON格式。我会将其反序列化为一个对象,以传递给API。但是,我无法加载此JSON,因为似乎找不到该文件。此文件是在项目创建时在根目录中创建的

我试图验证可用的文件,但在服务器上看不到JSON。我尝试在中打印文件和目录列表

Environment.CurrentDirectory
目前,我使用了VS17中的打包部署模式。这个函数是V1,框架是461

替代解决方案

  • 我可以直接用这些设置创建一个对象,并在需要时进行更新,但代价是灵活性和可读性。然而,JSON更易于理解和更改(并非所有使用此函数的人都是C#用户)

  • 我可以编写一个生成后命令来复制函数的bin文件夹中的文件,以便将其打包


  • 这不是一个应用程序设置,因此我不想把它放在那里。它也是一个嵌套的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)