programing

Azure 함수가 존재하는 동일한 폴더에서 File을 읽을 수 있습니까?

powerit 2023. 4. 28. 21:42
반응형

Azure 함수가 존재하는 동일한 폴더에서 File을 읽을 수 있습니까?

Azure C# 함수에서 .txt 파일을 읽어야 합니다.Visual 스튜디오에서 .txt 파일을 만들어 "항상 복사"로 설정합니다.

이제 이 코드를 사용하여 파일을 읽습니다.

var dir = System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetEntryAssembly().Location);

var path = System.IO.Path.Combine(dir, "twinkle.txt");

이 코드는 작동하지 않습니다.내가 dir의 값인 폴더를 열 때.이 디렉토리 "C:"로 이동합니다.\Users{username}\AppData\Local\Azure.기능들.Cli\1.0.9""

Azure 함수에 간단한 txt 파일을 저장하는 방법.아니면 애저 스토리지가 필요합니다.

이 일을 끝내기 위해 제가 할 수 있는 일은 무엇이든 있습니다.

복사된 파일을 표시하기

여기에 이미지 설명 입력

올바른 폴더로 이동하는 방법은 다음과 같습니다.

public static HttpResponseMessage Run(HttpRequestMessage req, ExecutionContext context)
{
    var path = System.IO.Path.Combine(context.FunctionDirectory, "twinkle.txt");
    // ...
}

다음 폴더로 이동합니다.function.json파일. 만약 당신이 접속해야 한다면.bin폴더, 당신은 아마도 한 단계 위로 올라가서 추가해야 할 것입니다.bin:

// One level up
Path.GetFullPath(Path.Combine(context.FunctionDirectory, "..\\twinkle.txt"))

// Bin folder
Path.GetFullPath(Path.Combine(context.FunctionDirectory, "..\\bin\\twinkle.txt"))

나처럼 접근할 수 없는 사람들을 위해.ExecutionContext우리가 파일을 읽어야 하기 때문에.Startup.

var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var rootDirectory = Path.GetFullPath(Path.Combine(binDirectory, ".."));

///then you can read the file as you would expect yew!
File.ReadAllText(rootDirectory + "/path/to/file.ext");

또한 주목할 가치가 있습니다.Environment.CurrentDirectory로컬 환경에서 작동할 수 있지만 Azure에 배포하면 작동하지 않습니다.

기능 내부에서도 작동합니다.

언급

다음은 유용한 링크입니다. https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function

하드 코딩 방식일 가능성이 있습니다.

File.ReadAllText("d:\home\site\wwwroot\NameOfYourFunction" + "/path/to/file.ext");

다음 파일을 사용하려면pub_key.pemAzure 함수에서.나는 차라리 이것을 내일 할 것입니다..csproj파일:

<ItemGroup>
    <EmbeddedResource Include="pub_key.pem">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </EmbeddedResource>
</ItemGroup>
 

그런 다음 파일을 읽습니다.Stream

var assy = Assembly.GetAssembly(typeof(AnyClassInFunction)); 
Stream fileStream = assy.GetManifestResourceStream(typeof(AnyClassInFunction),"pub_key.pem");

언급URL : https://stackoverflow.com/questions/49597721/is-it-possible-to-read-file-from-same-folder-where-azure-function-exists

반응형