البته اگر تا الان نگران بودید!
این موضوع در واقع در تمام برنامه های دات نتی وجود دارد. ولی من در مورد بحث وبسایت ها این مورد را بررسی کرده ام.
خود من به شخصه از زمانی که شروع به برنامه نویسی وب کردم همیشه چند آیتم را به صورت چک لیست در نظر داشتم وقتی سایت یا نرم افزاری را روی سروری نصب میکردم. یکی از این آیتم ها trust level هست.
مفهوم trust level در IIS همان طور که نامش میگوید، میزان دسترسی برنامه هاست شده روی IIS را تعیین میکند. به طور کلی دو دسته trust level داریم.
- Full trust: وقتی IIS با این سطح تنظیم میشود برنامه client امکان استفاده از منابع موجودی که سیستم عامل در اختیار user تنظیم شده با process مربوط به سایت می گذارد، را دارد. در واقع خود IIS کاری برای بررسی و محدود کردن برنامه client انجام نخواهد داد و کار به سیستم عامل واگذار میشود.
- Partial trust: این سطح خود به چند سطح زیر مجموعه تقسیم می شود. (که می توان level های خاص خودمان را هم ایجاد کنیم) و اگر هر کدام از آنها برای سایتی از طرف IIS تنظیم شده باشند خود IIS یک سری محدودیت هایی برای سایت client در نظر خواهد گرفت. مانند استفاده از reflection، نوشتن فایل،باز کردن دیالوگ هایی مانند انتخاب فایل و …
بعضی از دسترسی های بالا اگر به برنامه شما داده نشده باشند، در صورتی که از DI container یا library هایی که از code generation استفاده می کنند استفاده کنید به مشکل بر می خورید. مثلا قابلیت استفاده از ninject را در محیطی که دسترسی به reflection ندارد از دست خواهید داد. (اگر Ninject طوری تنظیم شده باشد که با reflection کار کند)
خودم به طور وسواس گونه ای! به این موضوع اهمیت می دادم تا وقتی یک سوالی را در سایت stackoverflow دیدم. در واقع سوال این بود که برای medium trust برنامه نویسی کردن بیهوده است یا نه. جواب یکی از کارکنان مایکروسافت این مطلب را می راسند که مایکروسافت trust level های بغیر از full را deprecated اعلام کرده. یعنی در آینده از طرف مایکروسافت این نیاز وجود خواهد داشت که برنامه برای اجرا شدن باید full trust باشد. حتی کلی از تکنولوژی های در حال کار مایکروسافت پشتیبانی خود را از medium trust حذف خواهند کرد. تکنولوژیهایی مانند MVC، WebAPI، SignalR و …
پس در واقع هاستینگ شما مجبور خواهد بود این امکان را به شما بدهد.
عادت خوب برنامه نویسی : اگر پروژه ای را شروع می کنید. از همان اول trust level پروژه را مشخص کنید تا در آینده و هنگام deploy کردن پروژه به مشکل بر نخورید. با این کار از همان ابتدا محدودیت های خود را خواهید فهمید. برای این کار در پروژه های asp.net در فایل web.config از تگ trust باید استفاده کنید. به صورت زیر:
1 2 3 4 5 |
<system.web> .... <trust level="Medium"/> .... </system.web> |