C# Json dosyasından API anahtarını çekmeye çalışırken "Could not find a part of the path"

222744

Gigapat
İlk 5 Haneli Mesajınız!
Katılım
27 Temmuz 2018
Mesajlar
11.217
Makaleler
5
Çözümler
57
Kafayı yiyeceğim, sanırım build configimde ya da editörlerimdeki bir ayar yanlışlığından muzdaribim fakat yeter.



"images" adlı bir klasörüm var ve bu klasör içinde ise "apikey.json" diye bir dosyam var bunun içinde ise haliyle API anahtarım yazıyor. Yapmaya çalıştığım şey sadece o dosyadaki metini okumak ve get requesti yapmak linke ekleyerek.

Projenin içi bu şekilde

1698328343102.png



Meteo.csproj dosyamın içi bu şekilde, images klasörünü aldığım yere kadar attım.

HTML:
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>

        <OutputType>WinExe</OutputType>

        <TargetFramework>net7.0</TargetFramework>

        <Nullable>enable</Nullable>

        <BuiltInComInteropSupport>true</BuiltInComInteropSupport>

        <ApplicationManifest>app.manifest</ApplicationManifest>

        <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>

    </PropertyGroup>



    <ItemGroup>

        <Folder Include="Models\" />

        <AvaloniaResource Include="Assets\**" />

        <AvaloniaResource Include="images\**"/>

    </ItemGroup>



ApiReq.cs adlı request atan sınıfımdaki API keyini alıp okuyan metod:

Kod:
        private async void LoadApiKey()

        {

            try

            {

                using (var reader = File.OpenText("images/apikey.json"))

                {

                        var fileText = await reader.ReadToEndAsync();

                        jsonAPIKey = fileText;

                }

                var config = JsonSerializer.Deserialize<WeatherGetApiConfig>(jsonAPIKey);

                _apikey = config?.apikey;

            }

            catch (Exception ex)

            {

                Console.WriteLine($"API anahtarını yüklerken hata oluştu: {ex.Message}");

            }

        }

Aldığım çıktı:

Kod:
API anahtarini y klerken hata olustu: Could not find a part of the path 'C:\kod\RiderProjects\Meteo_18.10.23\bin\Debug\net7.0\Meteo\images\apikey.json'.

json file not found

Tam yolu girince alıyor fakat oradaki göreli yolu girince (başına avares://, ./, ./Meteo/ ya da Meteo/ yazsam bile) olmuyor.


Bir garip sorun daha ise, debug yaparken çalışmıyor fakat build alıp images klasörünü build aldığım klasöre atınca çalışıyor.


Ben bir yerde mallık yaptığımı biliyorum fakat nerede yaptığımı bilmiyorum.
 
Yolu se sekilde kullanmayi deneyin bakalim ne olacak.
C#:
$"{AppContext.BaseDirectory}/Images/apikey.json"

Ayrica API anahtari neden public klasorde? API anahtarina kimsenin erismemesi gerekiyor. Application Secrets olarak tutmaniz daha dogru olacaktir.
 

Technopat Haberler

Geri
Yukarı