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
اکثر دوستان مبتدی فکر می کنند که فایل وب کانفیگ فقط شامل 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