PDA

View Full Version : آموزش: چگونه اطلاعات موجود در فایل web.config را در برنامه بخوانیم؟



alawiala
چهارشنبه 30 دی 1388, 15:57 عصر
چگونه اطلاعات موجود در فایل web.config را در برنامه بخوانیم؟
اکثر دوستان مبتدی فکر می کنند که فایل وب کانفیگ فقط شامل ConnectionString است
در حالی که شما می توانید در این فایل بسیاری از تنظیمات مربوطه را قرار دهید . مزیت این کار این است که هر گاه بخواهید اطلاعات را عوض کنید نیاز به کامپایلر و

غیره ندارید خیلی راحت می توانید از طریق notpad هم اینکار را انجام دهید اکنون بایک مثال روش کار را توضیح می دهم.

فرض کنید فایل web.config شما دارای کد زیر باشد .

<configuration

xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

<configSections>
<section name="site"
type="Company.Project.SiteSection, __code"/>

</configSections>


<site title="Some nice title for the site">
<homePage showAdBanners="false" />
</site>



<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" providerName="System.Data.SqlClient"
connectionString="Data Source=.\SQLExpress;
Integrated Security=True;User Instance=True;
AttachDBFilename=|DataDirectory|TheBeerHouse.mdf" />
</connectionStrings>

</configuration>


برای خواندن connectionString می توانید از کد زیر استفاده کنید

string connString = WebConfigurationManager.ConnectionStrings[
“LocalSqlServer”].ConnectionString;

اما برای خواندن مقادیر
<site title="Some nice title for the site">
<homePage showAdBanners="false" />
</site>
چه کار باید کرد و چه راهی وجود دارد .

راه حل : برای اینکار شما نیاز به 2 کلاس دارید کلاس اول برای خواندن تگ اول و کلاس دوم برای خواندن فرزند تگ اول

کلاس 1

public class SiteSection : ConfigurationSection
{
[ConfigurationProperty("title", DefaultValue="Sample Title")]
public string Title
{
get { return (string)base["title"]; }
set { base["title"] = value; }
}

[ConfigurationProperty("homePage", IsRequired=true)]

public HomePageElement HomePage
{
get { return (HomePageElement)base["homePage"]; }
}

}

کلاس 2

public class HomePageElement : ConfigurationElement
{
[ConfigurationProperty("showAdBanners", DefaultValue="true")]
public bool ShowAdBanners
{
get { return (bool)base["showAdBanners "]; }
set { base["showAdBanners "] = value; }
}
}
کلاس 1 به تگ section دسترسی پیدا می کند و می تواند مقادیر آن را بخواند این کلاس خصوصیتی دارد به نام title که مقدار پیش فرض آن

Sample Title تعریف شده است .همچنین خصوصیت
دیگر homepage وجود دارد که از نوع کلاس 2 است چون این تگ یک تگ فرزند است
.
اکنون کد کلاس شما تعریف شد در کد فرمتان بصورت زیر می توانید به کدها دسترسی پیدا کنید .

SiteSection site = (SiteSection)WebConfigurationManager.GetSection

("site");
string title = site.Title;
bool showAdBanners = site.HomePage.ShowAdBanners;

لینک فایل مقاله را گذاشتم خواناتر است
http://www.4shared.com/file/202130930/c58c5886/aspnet1.html

Mostafa_Dindar
چهارشنبه 30 دی 1388, 16:08 عصر
سلام .

2 نكته :

1- لطفا كدها را داخل bock كد قرار دهيد تا خوانا تر شود .


مزیت این کار این است که هر گاه بخواهید اطلاعات را عوض کنید نیاز به کامپایلر و غیره ندارید خیلی راحت می توانید از طریق notpad هم اینکار را انجام دهید
;

2- در اينكه از WebConfig استفاده زيادي ميشه كرد شكي نيست ولي شما همه فايلهاي VS رو ميتونيد با NotePad ويرايش كنيد و اين مختص فايل Web.Config نيست. بعبارتي شما حتي ميتوانيد با استفاده از NotePad يك ASP.NET WEB Application بزنيد ( با اينكه شدني هست ولي منطقي نيست :چشمک:)

alawiala
چهارشنبه 30 دی 1388, 16:13 عصر
فرمایش شما کاملا درست است ولی در بعضی مواقع اگر فایلهای دیگر را ویرایش کنید ممکنه زمانبر باشد علاوه بر این ممکن است تنظیمی مربوط به کل برنامه باشد مثل رشته اتصال به بانک اطلاعاتی یا ایمیلی و یا اطلاعات مربوط به کش و غیره

FirstLine
چهارشنبه 30 دی 1388, 17:06 عصر
با سلام
من یه تابع نوشتم که شاید استفاده ازش راحت باشه:
Web.config


<appSettings>
<add key="Site_URL" value="http://www.XXXXX.com"/>
</appSettings>
<connectionStrings>
<add name="DB_Simpa_ConnectionString" connectionString="Data Source=sql.xxxxxx.com;Initial Catalog=dbname;Persist Security Info=True;User ID=username;Password=Password" providerName="System.Data.SqlClient"/>
</connectionStrings>


VB.NET Read ConnectionStrings:


Public SQL_Server As String = ConfigurationManager.ConnectionStrings("DB_Simpa_ConnectionString").ConnectionString


VB.NET Read AppSettings :



Function MH_ConfigurationSettings_AppSettings_Save(ByVal ConfigurationSettings_Key As String, ByVal str_Value As String) As String
ConfigurationSettings.AppSettings.Set(Configuratio nSettings_Key, str_Value.ToString())
End Function

Function MH_ConfigurationSettings_AppSettings_Read(ByVal ConfigurationSettings_Key As String) As String
Return ConfigurationSettings.AppSettings(ConfigurationSet tings_Key).ToString()
End Function


Dim Site_URL as string
Site_URL = MH_ConfigurationSettings_AppSettings_Read("Site_URL")


با تشکر