فایل web.config همانطور که از اسم آن پیداست یک فایل پیکربندی برای یک پروژه ASP.net میباشد .در هر پروژه ASP.net یک فایل web.config وجود دارد که امکان پیکربندی پروژه را فراهم میسازد . البته امکان اینکه چند فایل web.config در یک پروژه وجود داشته باشد نیست . در انتهای این مقاله بعد از معرفی کلی این فایل به طرز استفاده از چند فایل در یک پروژه ASP.net میپردازیم.فایل web.config یک فایل از نوع xml بوده و تمامی تگ های داخل این فایل دارای معنی بوده لازم به ذکر است که این فایل نسبت به کوچک و بزرگ بودن حروف حساس است .
فایل machine.config چیست؟
همانطور که از یک فایل web.config برای پیکربندی یک پروژه ASP.net استفاده میشود از فایل machine.config برای پیکربندی پروژه های ASP.net که در یک کامپیوتر خاص اجرا میشوند استفاده میشود.بدین معنی که پیکربندی های که در یک فایل machine.config قرار دارد تمام پروژه های ASP.net که در آن کامپیوتر قرار دارند را تحت تاثیر قرار میدهد . معمولا فایل machine.config را تغییر نمیدهند و برای هر پروژه جداگانه و با استفاده از فایل های web.config پیکربندی را بطور جداگانه انجام میدهند.
چه چیزی در فایل web.config قرار میگیرد؟
تعداد زیادی تنطیمات مهم هستند که در یک فایل web.config قرار میگیرند . در زیر به ذکر چهار مورد از مهمترین تنظیماتی که میتواند در یک فایل web.config میواند قرار بگیرد اکتفا میکنیم:
یکی از مهمترین چیزهائی که در یک فایل web.config قرار میگیرد اطلاعات مربوط به connection string میباشد. دلیل قرار دادن یک connection string در یک فایل web.config زمانی مشخص میشود که قرار باشد که جای database خود را تغییر دهیم . در این حالت فقط کافی است که اطلاعات مربوط به connection string را در فایل web.config تغییر دهیم در صورتیکه اگر اطلاعات مربوط به connection string را در خود application قرار دهیم برای تغییر database باید تعداد زیادی از فایل های موجود در پروژه را تغییر دهیم و این کار زمانگیری است و بعلاوه ویژگی قابل حمل بودن یک برنامه را فوق العاده پائین می آورد . البته من زیاد با قرار دادن اطلاعات مهمی چون connectionstring به صورت خام زیاد موافق نیستم . اگر از این روش استفاده میکنید من توصیه میکنم که اطلاعات مربوط به connection string را رمز کرده و مقدار رمز شده را در فایل web.config قرار دهید . البته لازم به ذکر است که در رمز کردن از Hashing استفاده نکنید دلیلش رو اگه نمیدونید برید و مقاله قبلی که در مورد hashing هست رو یه مطالعه ای بکنید.در مثال زیر نحوه قرار دادن اطلاعات مربوط به یک Connection string را میبینیم:
همانطور که دیدید قراردادن اطلاعات مربوط به connection string در یک فایل web.config بسیار آسان است connection string با استفاده از key که در اینجا ConnectionString میباشد مورد ارجاء قرار میگیرد و value مشخص کننده مقدار این key میباشد.در حاشیه این قسمت بد نیست اگه یه سری به سایت www.connectionstring.com بزنید و در آنجا از وجود مجموعه زیادی از connection string های مختلف مربوط به DBMS های مختلف لذت ببرید. دستیابی به این key ها در یک Application بسیار آسان است .
برای دستیابی به key در یک application به شکل زیر عمل میکنیم:
Session در یک پروژه ASP.net بسیار مهم است . همانطور که میدانید پروتکل HTTP یک پروتکل StateLess میباشد به این معنی که بصورت اتوماتیک امکان تشخیص اینکه رشته ای از تقاضاها به سمت یک سایت همگی از سوی یک کامپیوتر صورت میگیرد یا اینکه یک مرورگر در حال مشاهده یک سایت هست یا نه وجود ندارد . برای رفع این دو مشکل فوق و در اصطلاح برای State نگه داشتن یک سایت از Session States استفاده میشود .ASP.net برای ذخیره کردن Session از روش های مختلفی استفاده میکند . به طور پیش فرض ASP.net ، session ها را در همان پردازش مربوط به سایت ذخیره سازی میکند .همچنین شما برای ذخیره سازی session ها علاوه بر روش پیش فرض میتوانید از دو روش زیر استفاده کنید . ناگفته نماند که مشخص کردن نحوه ذخیره سازی یک Session در فایل Web.config مشخص میشود.روش های ذخیره سازی را در زیر می بینید:
1-Session State Server
استفاده از این روش برای ذخیره سازی Session ها دارای دو سود مناسب است . اول اینکه به این دلیل که پروسس های مربوط به Session و Application یکی نیستند چنانچه Application به قول معروف Crash کند هیچ آسیبی متوجه Session ها نخواهد بود چون دو پردازش مجزا هستند . دومین سود این است که امکان اشتراک در میان یک کامپیوتر چند پردازنده میسر میباشد. برای مشخص کردن اینکه نحوه ذخیره سازی Session به صورت State Server باشد لازم است در فایل web.config تغییرات زیر را اعمال کنیم:
<sessionState mode=”StateServer” stateConnectionString="tcpip=127.0.0.1:55455" sqlConnectionString="data source=127.0.0.1;user id=sa;password='' cookieless="false" timeout="20" />
در زیر توضیحی مختصر راجع به پارامترهای بالا را ذکر میکنم:
Mode : درواقع حالت ذخیره سازی است که میتواند یکی از دو مقدار StateServer یا SqlServer باشد در اینجا چون میخواهیم از روش StateServer استفاده کنیم مقدار Mode را مساوی StateServer قرار میدهیم.
stateConnectionString :connection string که از آن برای مشخص کردن موقعیت State Service استفاده میشود .
sqlConnectionString :connection string مربوط به SqlServer میباشد که البته برای State Server لازم نیست ولی برای حالت SqlServer لازم است چون در این نوع از ذخیره سازی از SqlServer استفاده میشود.
Cookieless : در صورت تمایل برای نگه داشتن مقدار Session در سمت Client بعد از قطع اتصال بین سایت و Client میتوان مقدار این گزینه را False کرد ولی من که این کار را مفید نمیبینم پس با True کردن این مقدار اجازه ذخیره شدن اطلاعات مربوط بهSession را ندهید .
Timeout: در واقع این item طول عمر یک Session را بر حسب دقیقه بیان میکند .
البته این تگ item های دیگری هم دارد که من توضیح نمیدم ولی حتما قبل از استفاده از Session ها یه نگاهی به این گزینه ها بکنید به طور مثال یکی از گزینه هائی که نگفتم در مورد رمز کردن اطلاعات داخل Sessionو نگه داشتن این اطلاعات در کامپیوتر Client میباشد.
2-SqlServer
انتخاب دوم برای ذخیره سازی Session ها SqlServer 2000 میباشد . برای ذخیرهسازی اطلاعات مربوط به یک Session با استفاده از SqlServer مراحل زیر را دنبال کنید:
1- با استفاده از ابزا Query Analyser اسکریپت InstallSqlSate.sql را اجرا کرده تا DataBase مورد نیاز برای ذخیره سازی Session در SqlServer ایجاد شود . لازم به ذکر است که فایل InstallSqlState.sqlدر مسیر زیر است:
systemroot\Microsoft.NET\Framework\versionNumber
2- در مرحله دوم لازم است تا تنظیمات لازم را به مانند آنچه در StateServer انجام دادیم ، انجام دهیم .
برای این کار لازم است تا تغییرات زیر را در فایل web.config انجام دهیم:
<sessionState mode=”SqlServer” sqlConnectionString=” data source=SERVERNAME;user id=sa;password=;” />
البته اطلاعات دیگر را به مانند آنچه در State Server دیدید قرار دهید.
SqlServer امکان به اشتراک گذاشتن اطلاعات مربوط به یک Session را بین چند سایت یا حتی چند Server ممکن میسازد ولی تنها ایراد این روش در این است که SqlServer نسبت به Session State کندتر است و از این لحاظ بهتر است که از StateServer استفاده کنیم .
3-Error Handling
Error handling یکی از قسمت های خیلی مهم در هر پروژه تحت وب میباشد . امکان رخ دادن هر نوع Error وجود دارد بنابراین بایستی راهی را برای مقابله با این error ها در نظر بگیریم . ASP.net با استفاده از فایل Web.config به ما این امکان را میدهد که Error ها را کنترل کنیم .
بطور مثال برای کنترل error 404 به شکل زیر عمل میکنیم :
چند خط کد فوق برای این است که در هنگام رخدادن error 404 که مربوط به یافت نشدن صفحه است بجای نمایش این error به صفحه notfound.asp برود . چنانچه Mode=””Off باشد در این صورت در هنگامی که یک Error رخ دهد همان error برای کاربران نهائی نمایش داده میشود .
4-security(authentication)
یکی از جنبه های مهم هر برنامه تحت وب امنیت آن است . ASP.net امکانات مناسبی را در زمینه امنیت ایجاد کرده است که میتوانیم بر حسب نیاز از این امکانات استفاده کنیم .یکی از امکاناتی که .net در زمینه امنیت ارائه داده است اعتبارسنجی کاربران است که از سه طریق این عمل ممکن میشود:
1-Windows Authentcation
Windows authentication به شما این امکان را میدهد تا از اکانت های کاربران در ویندوز استفاده کنید . این سرویس از IIS استفاده میکند . و بعد از اعتبارسنجی کاربران اطلاعات کاربری تائید شده را برای کد برنامه شما ارساال می کند . اگر شما مایل به این هستید که بدانید کدام کاربر ویندوز از برنامه های ASP.net استفاده میکند با استفاده از Property زیر میتوانید این اطلاعات را بدست آورید :
User.Identify.Name;
این Property کلمه کاربری(username) کاربر فعلی را در خود دارد .
2-Passport Authentication
این نوع از اعتبارسنجی کاربران برای اعتبارسنجی از سرویس Passport محصول شرکت Microsoft استفاده میکند . برای استفاده از این سرویس میبایستی این سرویس را خریداری کنید .
3-Forms Authentication
این نوع از اعتبارسنجی کاربران برای اعتبارسنجی از Form های Login که در بیشتر سایت ها میبینیم استفاده میکنند . این نوع از اعتبارسنجی به واقع بیشترین استفاده را در میان سه نوع اعتبار سنجی دارد .بارها شده در سایت هائی رفته و اجازه مشاهده یک سری از صفحات فقط در صورت