Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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/asp.net-core/3.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
C# 如何在通过VS2019部署并从zip读取的Azure Function app中上载文件?_C#_Asp.net Core_Azure Functions - Fatal编程技术网

C# 如何在通过VS2019部署并从zip读取的Azure Function app中上载文件?

C# 如何在通过VS2019部署并从zip读取的Azure Function app中上载文件?,c#,asp.net-core,azure-functions,C#,Asp.net Core,Azure Functions,我正在使用Azure Function app V2和.net core 2.2堆栈构建一个web服务。我的功能正按照要求完美运行。我试图实现的是从JSON文件中读取函数,以便从该文件中获取特定值以进行进一步处理。我正在使用VisualStudio2019,并通过IDE本身发布应用程序。因此,默认情况下,我的应用程序处于读取模式。我上传的JSON文件和我的函数文件在同一个文件中。此外,我还尝试从配置中删除网站\u RUN\u,但没有成功,因为它不再在门户中显示功能 当我在通过VS2019方式(从

我正在使用Azure Function app V2和.net core 2.2堆栈构建一个web服务。我的功能正按照要求完美运行。我试图实现的是从JSON文件中读取函数,以便从该文件中获取特定值以进行进一步处理。我正在使用VisualStudio2019,并通过IDE本身发布应用程序。因此,默认情况下,我的应用程序处于读取模式。我上传的JSON文件和我的函数文件在同一个文件中。此外,我还尝试从配置中删除网站\u RUN\u,但没有成功,因为它不再在门户中显示功能

当我在通过VS2019方式(从zip读取)发布应用程序后运行应用程序时,确保json与函数文件位于同一文件夹中,我收到如下错误:

找不到文件“D:\home\site\wwwroot\functionname\filename.json”。

我正在尝试使用以下代码访问文件:


var filePath=Path.Combine(context.FunctionDirectory,“filename.json”)

根据我的测试,如果我们在VisualStudio2019中将函数部署到Azure,则无法将json文件部署到Azure。我们需要通过kudo手动将文件上传到Azure函数

  • 在Visual Studio中将函数部署到Azure

  • 通过kudu将文件上载到Azure函数

  • 此外,如果您的文件太大,我建议您将文件存储在Azure Blob存储中,然后在函数中使用Blob。有关更多详细信息,请参阅

    更新 关于如何配置Azure Blob存储输入,请参考以下步骤

  • 更新您的项目

    a。在VisualStudio中安装sdk

    安装软件包Microsoft.Azure.WebJobs.Extensions.Storage-版本3.0.8

    b。更新local.settings.json 请添加用于存储json文件的帐户的连接字符串

    {
    "IsEncrypted": false,
    "Values": {
    "AzureWebJobsStorage": " your function storage",
    "MyStorage": "the storage you use to store file",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
    }
    
    c。更新代码

    [FunctionName("Function1")]
     public static async Task<IActionResult> Run(
         [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
         [Blob("test/test.json", FileAccess.Read, Connection = "MyStorage")] Stream blob,
         ILogger log,ExecutionContext context)
     {
         log.LogInformation("C# HTTP trigger function processed a request.");
    
    
         string text=null;
         blob.Seek(0,SeekOrigin.Begin);
         using (StreamReader streamReader = new StreamReader(blob)) {
    
             while (!streamReader.EndOfStream) {
    
               string  textLine = await streamReader.ReadLineAsync();
                 text += textLine;
             }
             dynamic data = JsonConvert.DeserializeObject(text);
             return (ActionResult)new OkObjectResult(data);
    
         }
    
    
     }
    
    
    
    [FunctionName(“Function1”)]
    公共静态异步任务运行(
    [HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]HttpRequest请求,
    [Blob(“test/test.json”,FileAccess.Read,Connection=“MyStorage”)]流Blob,
    ILogger日志,ExecutionContext(上下文)
    {
    LogInformation(“C#HTTP触发器函数处理了一个请求。”);
    字符串文本=空;
    查找(0,SeekOrigin.Begin);
    使用(StreamReader StreamReader=新StreamReader(blob)){
    而(!streamReader.EndOfStream){
    string textLine=等待streamReader.ReadLineAsync();
    text+=文本行;
    }
    动态数据=JsonConvert.DeserializeObject(文本);
    返回(ActionResult)新的OkObjectResult(数据);
    }
    }
    
  • 发布您的项目

  • 更新您的函数应用程序设置

  • 试验


  • 如果要随功能应用程序一起部署其他文件,请更改.csproj文件。找到ItemGroup节点并进行更新。我正在添加两个文件json1.json和index.html。我必须手动添加CopyTopPublishDirectory节点,默认情况下,对于用户添加的项目,这些节点不存在。使用VS2019中的zip部署进行部署

    
    保存最新
    保存最新
    保存最新
    保存最新
    保存最新
    从未
    
    您想通过这种方式实现什么?由于在更改json文件时需要重新部署,您还可以在代码中硬编码json字符串。你想过配置吗?是的,当我在代码中使用硬代码json时,它就工作了。但最终我的JSON正在增长,我想从JSON文件中动态提取数据。因为我的函数应用程序是基于webhook触发的,所以我想以更好的方式维护我的json。希望这是有道理的。我也试过用kudu。该文件被上传,我得到错误,我不能“写”文件。现在,当我将配置设置更改为“读/写”模式时,我的函数将从函数应用程序中消失。而且,我的函数当前是httprequest类型。是否可以使用c#library将blob输入绑定到我的httprequest触发器函数?