Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 从Visual Studio发布代码时,如何将文件上载到Azure函数?_C#_Azure_Azure Functions_Azure Function App - Fatal编程技术网

C# 从Visual Studio发布代码时,如何将文件上载到Azure函数?

C# 从Visual Studio发布代码时,如何将文件上载到Azure函数?,c#,azure,azure-functions,azure-function-app,C#,Azure,Azure Functions,Azure Function App,我创建了一个Azure函数,它依赖于ini文件 在将代码发布到Azure函数时,我在Visual Studio中选择了“从不复制”选项 此外,我还尝试了选择嵌入式资源。但是我找不到文件 我有个例外 找不到文件 Azure门户中的添加/上载选项已禁用,因为我正在从Visual studio发布该功能 问题:是否需要将文件上载到blob,然后在代码中引用它?最终结论是文件已成功上载,问题是读取路径时出错。在Azure中使用Directory.GetCurrentDirectory似乎不可靠 我刚试过

我创建了一个Azure函数,它依赖于ini文件

在将代码发布到Azure函数时,我在Visual Studio中选择了“从不复制”选项 此外,我还尝试了选择嵌入式资源。但是我找不到文件

我有个例外

找不到文件

Azure门户中的添加/上载选项已禁用,因为我正在从Visual studio发布该功能


问题:是否需要将文件上载到blob,然后在代码中引用它?

最终结论是文件已成功上载,问题是读取路径时出错。在Azure中使用Directory.GetCurrentDirectory似乎不可靠


我刚试过,Directory.GetCurrentDirectory在azure中得到了错误的路径,我打印出来,它显示了D:\Program Files x86\SiteExtensions\Functions\2.0.12961\32位,这显然不是当前文件夹,最终它找不到Sample.ini文件。由于函数是您自己的,因此可以将路径设置为类似于D:\\home\\site\\wwwroot>\\Ini\\Sample.Ini的内容。这应该读取Sample.ini文件。

最终结论是文件已成功上载,问题是读取路径时出错。在Azure中使用Directory.GetCurrentDirectory似乎不可靠

我刚试过,Directory.GetCurrentDirectory在azure中得到了错误的路径,我打印出来,它显示了D:\Program Files x86\SiteExtensions\Functions\2.0.12961\32位,这显然不是当前文件夹,最终它找不到Sample.ini文件。由于函数是您自己的,因此可以将路径设置为类似于D:\\home\\site\\wwwroot>\\Ini\\Sample.Ini的内容。这应该读取Sample.ini文件。

以下是方法

ExecutionContext上下文;//您可以修改函数方法以获取ExecutionContext类型的附加参数

公共静态异步任务运行、ILogger日志、ExecutionContext上下文

然后通过组合function directory构建路径,templates是我在function app项目中拥有的目录,它与其他代码一起部署,emails.html是模板中的文件,您必须为每个文件设置、始终复制或复制(如果属性中较新的话)。。您可以使用.ini文件代替模板

字符串templatePath=Path.Combinecontext.FunctionAppDirectory,Templates,emails.html

下面是一个方法

ExecutionContext上下文;//您可以修改函数方法以获取ExecutionContext类型的附加参数

公共静态异步任务运行、ILogger日志、ExecutionContext上下文

然后通过组合function directory构建路径,templates是我在function app项目中拥有的目录,它与其他代码一起部署,emails.html是模板中的文件,您必须为每个文件设置、始终复制或复制(如果属性中较新的话)。。您可以使用.ini文件代替模板


字符串templatePath=Path.Combinecontext.FunctionAppDirectory,Templates,emails.html

函数被部署到azure,它实际上被部署到kudu,如果更新,您可以修改Sample.ini以复制,那么理论上它应该能够成功地传输到kudu的d驱动器。检查一下你是否在库杜有这个文件。我想它应该上传成功。我想它应该上传成功。您的kudu中的D:\home\site\wwwroot>下是否有Sample.ini?请检查。是的,你是对的,我可以在wwwroot下看到它。那么我应该在代码中使用它的路径是什么呢?FileManager.ReadFile的内部逻辑是什么,或者这个方法在哪个包中?这是您自己编写的方法吗?是的,在内部它使用StreamReader通过传递文件路径来读取文件。函数部署到azure,它实际上部署到kudu,如果更新,您可以修改Sample.ini以复制,那么理论上它应该能够成功地传输到kudu的d驱动器。检查一下你是否在库杜有这个文件。我想它应该上传成功。我想它应该上传成功。您的kudu中的D:\home\site\wwwroot>下是否有Sample.ini?请检查。是的,你是对的,我可以在wwwroot下看到它。那么我应该在代码中使用它的路径是什么呢?FileManager.ReadFile的内部逻辑是什么,或者这个方法在哪个包中?这是您自己编写的方法吗?是的,它在内部使用StreamReader通过传递文件路径来读取文件。如何保证它始终具有D驱动器?有没有办法使用内置函数获取wwwroot文件夹路径?@kudlatiger所谓的部署到Azure实际上是将编译后的文件上载到kudu Azure函数属于web应用程序沙箱的D:\home\site\wwwroot文件夹,原理相同。使用Azure Web app时,D:\home\site\wwwroot始终是您的物理根路径。它始终具有D驱动器的保证是什么?有没有什么办法可以让我离开呢
o使用内置函数获取wwwroot文件夹路径?@kudlatiger所谓的部署到Azure实际上是将编译后的文件上载到kudu Azure函数的D:\home\site\wwwroot文件夹属于web应用程序沙箱,原理相同。使用Azure Web app时,D:\home\site\wwwroot始终是您的物理根路径。
 public class DataProcessingFunction
 {
    FunctionName("DataProcessingFunction")]
    public async Task Run([EventGridTrigger]EventGridEvent eventGridEvent,ILogger log)
    {
        string iniFolderPath = $@"{Directory.GetCurrentDirectory()}\Ini\";
        string iniFileName = "Sample.ini";
        var iniConfig = FileManager.ReadFile(iniFolderPath, iniFileName);
    }
 }