﻿
{"id":5728,"date":"2017-03-08T03:04:47","date_gmt":"2017-03-08T03:04:47","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=5728"},"modified":"2017-03-08T03:04:47","modified_gmt":"2017-03-08T03:04:47","slug":"nette-config-dosyasini-harici-kaynakla-beslemek","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/nette-config-dosyasini-harici-kaynakla-beslemek\/","title":{"rendered":".NET&#8217;te Config Dosyas\u0131n\u0131 Harici Kaynakla Beslemek"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Biz .NET geli\u015ftiricileri masa\u00fcst\u00fc yahut web dal\u0131nda projeler geli\u015ftirirken belli ba\u015fl\u0131 bilgileri config\u00fcrasyon dosyalar\u0131nda tutmaktay\u0131z. Bu dosyalar\u0131m\u0131z genellikle web projelerinde <em>Web.config<\/em> dosyas\u0131 iken masa\u00fcst\u00fc projelerinde ise <em>App.config<\/em> dosyalar\u0131d\u0131r. Ama biliyoruz ki bu dosyalar\u0131n ne isimleri de\u011fi\u015ftirilebilmekte ne de dosya dizinleri. Eee haliyle bu \u015fekilde tek bir dosya ile \u00e7al\u0131\u015fmak mecburiyetinde kal\u0131yor ve tutulan t\u00fcm bilgiler bir curcuna misali ilgili dosyada saklan\u0131yor.<\/p>\n<p>\u0130\u015fte bu mecburiyete bir alternatif olarak ilgili &#8220;Web.config&#8221; ya da &#8220;App.config&#8221; dosyas\u0131na bir harici kaynak olu\u015fturabiliyor ve ilgili segmenti, olu\u015fturulan bu harici kaynak ile besleyebiliyoruz. \u015eimdi gelin bu i\u015flemi hangi \u015fartlarda nas\u0131l yap\u0131yoruz inceleyelim.<\/p>\n<p>Makalemizde bir Console Application \u00fczerinden anlat\u0131m sergileyece\u011fimden dolay\u0131 App.config dosyas\u0131 \u00fczerinde bir \u00f6rneklendirme yapaca\u011f\u0131z.<em>(App.config&#8217;te g\u00f6sterilenlerin Web.config&#8217;te aynen uygulanabilece\u011fini s\u00f6ylememe gerek yok san\u0131r\u0131m)<\/em><\/p>\n<p>\u00d6rne\u011fin projelerimizde mail bilgilerini config\u00fcrasyon dosyas\u0131nda tutaca\u011f\u0131m\u0131z\u0131 varsayal\u0131m.<\/p>\n<p>\u00d6ncelikle harici config\u00fcrasyon dosyas\u0131n\u0131 olu\u015ftural\u0131m. (<em>MailBilgileri.config<\/em>)<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n--- MailBilgileri.config ---\r\n&lt;appSettings&gt;\r\n  &lt;add key=&quot;Ad&quot; value=&quot;Gen\u00e7ay&quot; \/&gt;\r\n  &lt;add key=&quot;Soyad&quot; value=&quot;Y\u0131ld\u0131z&quot; \/&gt;\r\n  &lt;add key=&quot;EPosta&quot; value=&quot;gyildizmail@gmail.com&quot; \/&gt;\r\n&lt;\/appSettings&gt;\r\n<\/pre>\n<p>Ard\u0131ndan esas config\u00fcrasyon dosyam\u0131z\u0131n i\u00e7eri\u011fini olu\u015ftural\u0131m. (<em>App.config<\/em>)<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n--- App.config ---\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;\r\n&lt;configuration&gt;\r\n  &lt;appSettings configSource=&quot;MailBilgileri.config&quot;&gt;\r\n\r\n  &lt;\/appSettings&gt;\r\n  &lt;startup&gt;\r\n    &lt;supportedRuntime version=&quot;v4.0&quot; sku=&quot;.NETFramework,Version=v4.6.1&quot; \/&gt;\r\n  &lt;\/startup&gt;\r\n&lt;\/configuration&gt;\r\n<\/pre>\n<p>\u015eimdi, App.config dosyam\u0131z\u0131n i\u00e7eri\u011fini incelerseniz e\u011fer appSettings sekmesine bir configSource niteli\u011fi eklenmi\u015ftir ve ilgili harici kayna\u011f\u0131n adresi belirtilmi\u015ftir.<\/p>\n<p>Bu i\u015flem neticesinde esas conf\u00fcg\u00fcrasyon dosyam\u0131z harici kaynaktaki i\u00e7erikten beslenecektir.<br \/>\nTabi bu kullan\u0131m s\u00fcrecinde dikkat etmemiz gereken bir ka\u00e7 husus vard\u0131r.<br \/>\nBuyrun, bu hususlar\u0131 inceleyelim&#8230;<\/p>\n<ul>\n<li><strong><em>Harici Kaynak Sadece Belirtilece\u011fi Segmenti Bar\u0131nd\u0131rmal\u0131d\u0131r<\/em><\/strong><br \/>\nDikkat ederseniz e\u011fer harici kayna\u011f\u0131m\u0131z i\u00e7erisinde appSettings segmenti mevcuttur. Haliyle bu kaynak sadece appSettings segmentine configSource niteli\u011fi ile source olarak g\u00f6sterilebilir.<\/li>\n<li><strong><em>Harici Kayna\u011f\u0131n Yolu Tam Belirtilmelidir<\/em><\/strong><br \/>\nYukar\u0131daki \u00f6rnekte harici kayna\u011f\u0131m\u0131z, App.config dosyas\u0131yla ayn\u0131 dizinde oldu\u011fu i\u00e7in direkt olarak belirtilmi\u015ftir. Yok e\u011fer farkl\u0131 bir dizinde olsayd\u0131 a\u015fa\u011f\u0131daki \u00f6rnekte oldu\u011fu gibi belirtilmesi gerekecekti.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;\r\n&lt;configuration&gt;\r\n  &lt;appSettings configSource=&quot;Configs\\\\MailBilgileri.config&quot;&gt;\r\n\r\n  &lt;\/appSettings&gt;\r\n  &lt;startup&gt;\r\n    &lt;supportedRuntime version=&quot;v4.0&quot; sku=&quot;.NETFramework,Version=v4.6.1&quot; \/&gt;\r\n  &lt;\/startup&gt;\r\n&lt;\/configuration&gt;\r\n<\/pre>\n<\/li>\n<li><strong><em>Harici Kayna\u011f\u0131n &#8220;Copy to Output Directory&#8221; \u00d6zelli\u011fi &#8220;Copy \u0130f Newer&#8221; Yahut &#8220;Copy Always&#8221; Olmal\u0131d\u0131r<\/em><\/strong><br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-5738 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek.png\" alt=\".NET'te Config Dosyas\u0131n\u0131 Harici Kaynakla Beslemek\" width=\"235\" height=\"203\" \/><\/a><br \/>\nEkran g\u00f6r\u00fcnt\u00fcs\u00fcnde de oldu\u011fu gibi ilgili harici dosyan\u0131n \u00f6zelliklerinde bulunan &#8220;Copy to Output Directory&#8221; \u00f6zelli\u011fi ya &#8220;Copy if newer&#8221; yahut da &#8220;Copy always&#8221; olmal\u0131d\u0131r.&nbsp;<br \/>&nbsp;<br \/>&nbsp;<\/p>\n<p>E\u011fer bu ayar\u0131 yapmazsan\u0131z,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5740\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek-1.png\" alt=\".NET'te Config Dosyas\u0131n\u0131 Harici Kaynakla Beslemek.PNG\" width=\"402\" height=\"73\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek-1.png 402w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek-1-300x54.png 300w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/a><br \/>\ng\u00f6r\u00fcnt\u00fcde ki hatayla kar\u015f\u0131la\u015f\u0131rs\u0131n\u0131z&#8230;<\/p>\n<blockquote><p><em>System.Configuration.ConfigurationErrorsException: &#8216;Unable to open configSource file &#8216;Configs\\\\MailBilgileri.config&#8217;.&#8217;<\/em><\/p><\/blockquote>\n<\/li>\n<\/ul>\n<p>Bunlar\u0131n d\u0131\u015f\u0131nda yukar\u0131da yapm\u0131\u015f oldu\u011fumuz i\u015flemin sa\u011flamas\u0131n\u0131 da yaparsak e\u011fer;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Console.WriteLine($&quot;Ad\u0131 : {ConfigurationManager.AppSettings&#x5B;&quot;Ad&quot;]}\\nSoyad\u0131 : {ConfigurationManager.AppSettings&#x5B;&quot;Soyad&quot;]}\\nE-Posta : {ConfigurationManager.AppSettings&#x5B;&quot;EPosta&quot;]}&quot;);\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/NETte-Config-Dosyas\u0131n\u0131-Harici-Kaynakla-Beslemek-2.png\" alt=\".NET&#039;te Config Dosyas\u0131n\u0131 Harici Kaynakla Beslemek.PNG\" width=\"263\" height=\"86\" class=\"aligncenter size-full wp-image-5753\" \/><\/a><br \/>\nEvet&#8230;<br \/>\nBu tarz bir yakla\u015f\u0131mla config\u00fcrasyon dosyalar\u0131m\u0131z\u0131 daha anla\u015f\u0131l\u0131r ve d\u00fczenli bir \u015fekilde organize edece\u011fimiz kanaatindeyim.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Biz .NET geli\u015ftiricileri masa\u00fcst\u00fc yahut web dal\u0131nda projeler geli\u015ftirirken belli ba\u015fl\u0131 bilgileri config\u00fcrasyon dosyalar\u0131nda tutmaktay\u0131z. Bu dosyalar\u0131m\u0131z genellikle web projelerinde Web.config dosyas\u0131 iken masa\u00fcst\u00fc projelerinde ise App.config dosyalar\u0131d\u0131r. Ama biliyoruz ki bu dosyalar\u0131n&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[130,1641,1642,548],"class_list":["post-5728","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","tag-app-config","tag-configsource","tag-copy-to-output-directory","tag-web-config"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=5728"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5728\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=5728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=5728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=5728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}