appsettings.json
एकल-फ़ाइल अनुप्रयोग के लिए बनाया गया है जो एक ही निर्देशिका में है जो फ़ाइल के लिए देखने के लिए एकल-फ़ाइल .net Core 3.0 वेब API एप्लिकेशन को कैसे कॉन्फ़िगर किया जाना चाहिए ?
चलने के बाद
dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true
निर्देशिका इस तरह दिखती है:
XX/XX/XXXX XX:XX PM <DIR> .
XX/XX/XXXX XX:XX PM <DIR> ..
XX/XX/XXXX XX:XX PM 134 appsettings.json
XX/XX/XXXX XX:XX PM 92,899,983 APPNAME.exe
XX/XX/XXXX XX:XX PM 541 web.config
3 File(s) 92,900,658 bytes
हालाँकि, APPNAME.exe
निम्न त्रुटि में परिणाम चलाने का प्रयास कर रहा है
An exception occurred, System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\Users\USERNAME\AppData\Local\Temp\.net\APPNAME\kyl3yc02.5zs\appsettings.json'.
at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()
at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
...
मैंने एक समान, लेकिन विशिष्ट प्रश्न और साथ ही अन्य स्टैक ओवरफ्लो प्रश्नों से समाधान की कोशिश की ।
मैंने निम्नलिखित को पारित करने का प्रयास किया SetBasePath()
Directory.GetCurrentDirectory()
environment.ContentRootPath
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
प्रत्येक ने एक ही त्रुटि का नेतृत्व किया।
समस्या की जड़ यह है कि PublishSingleFile
बाइनरी अनज़िप्ड है और एक temp
डायरेक्टरी से चलती है ।
इस एकल फ़ाइल ऐप के मामले में, यह जिस स्थान को देख रहा appsettings.json
था वह निम्न निर्देशिका थी:
C:\Users\USERNAME\AppData\Local\Temp\.net\APPNAME\kyl3yc02.5zs
उपरोक्त सभी विधियाँ उस स्थान की ओर इंगित करती हैं जिस पर फ़ाइल को अनज़िप किया गया है, जो उस स्थान से भिन्न है जहाँ से इसे चलाया गया था।