الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في تعديل جملة الإتصال في ملف app.config

بدأه بهاء صلاح الدين في 18 فبراير 2011 · 1 رد · 815 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته،

عند تثبيت البرنامج عند جهاز العميل، فإنه يتم وضع ثلاث ملفات app.config، واحد في مجلد البرنامج في program files و الثاني في سطح المكتب و هو خاص بإختصار البرنامج على سطح المكتب و الثالث في قائمة start.

هذه الملفات تحتوي على جمل الإتصال الخاصة بالبرنامج، المشكلة إذا شغلت البرنامج من سطح المكتب و قمت بتعديل جملة الإتصال فإن التعديل سيتم فقط في الملف الموجود على سطح المكتب و لن يتم تطبيق التغييرات على الملفين الآخرين.و نفس الأمر إذا شغلت البرنامج من قائمة start أو من مجلد program files.

كيف أستطيع تطبيق التغييرات في جملة الإتصال على الملفات الثلاثة في نفس الوقت؟؟

مشكلة الأخرى:

بعد تغيير جملة الإتصال فإن البرنامج لا يشعر بالتغيير إلا إذا قمت بإغلاقه و تشغيله مرة أخرى.. كيف يمكن حل هذه المشكلة؟

هذا كود تعديل جمل الإتصال في البرنامج:

Configuration myConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None );
            	//
            	if (myConfig.ConnectionStrings.ConnectionStrings["orient"] == null)
            	{
                	ConnectionStringSettings orient_con = new ConnectionStringSettings("orient", "Data Source=" + textBox1.Text + "\\sqlexpress;Initial Catalog=Orient_Services;Integrated Security=False;User ID=sa;Password=11111", "System.Data.SqlClient");
                	//
                	ConnectionStringsSection csSection = myConfig.ConnectionStrings;
                	csSection.ConnectionStrings.Add(orient_con);
                	myConfig.Save(ConfigurationSaveMode.Full, true);
            	}
            	else
            	{
                	ConnectionStringsSection csSection = myConfig.ConnectionStrings;
                	csSection.ConnectionStrings["orient"].ConnectionString = "Data Source=" + textBox1.Text + "\\sqlexpress;Initial Catalog=Orient_Services;Integrated Security=False;User ID=sa;Password=11111";
                	myConfig.Save(ConfigurationSaveMode.Modified , true);
            	}

و هذا ملف app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
	<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
  	<section name="orient_services.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
	</sectionGroup>
  </configSections>
  <connectionStrings>
	<add name="orient" connectionString="Data Source=.\sqlexpress;Initial Catalog=Orient_Services;User ID=sa;Password=123456"
  	providerName="System.Data.SqlClient" /> 
  </connectionStrings>
  <system.windows.forms jitDebugging="true " />
</configuration>
#2

السلام عليكم و رحمة الله و بركاته،

تم حل المشكلتين:

بالنسبة لمشكلة تطبيق التغييرات على الملفات الثلاثة في وقت واحد، قمت بوضع جميع ملفات المشروع في application folder و قمت بعمل shortcut للبرنامج في مجلد User's Desktop و مجلد User's Programs Menu(أنا أستخدم vs 2008 لعمل تحزيم للبرنامج)، ثم فّعلت خاصية run as administrator للبرنامج.

أما مشكلة عدم شعور البرنامج بالتغيير في جملة الإتصال ، فلم أجد حلاً لها على الإنترنت، و لا يوجد حل حالياً سوى أن يقوم البرنامج بإعادة تشغيل نفسه مرة أخرى.

مواضيع مشابهة