انتقال تجربیات در حوزه برنامه نویسی دات نت

۳ مطلب با موضوع «MVC» ثبت شده است

انتشار یک پروژه از طریق ویژوال استدیو بر روی IIS

برای انتشار یک پروژه وب بر روی IIS معمولا از پروژه publish میگیریم و فایل های publish رو بر روی سروری که iis دارد کپی میکنیم که این امر باعث اتلاف زمان میگردد.

برای افزایش سرعت توسعه و تست میتوان از روشی استفاده کرد که در آن تنظیماتی را بر روی ویژوال استدیو وارد میکنیم تا فایل ها بلافاصله پس از publish بر روی iis قرار گیرد.


نصب و تنظیم Web Deploy بر روی ویندوز سرور

1- ابتدا باید بر روی ویندوز سرور web platform installer را نصب کنید. برای این منظور میتوانید از این لینک استفاده کنید.

2- پس از نصب web platform installer  آن را از منوی استارت اجرا کنید. (Microsoft web platform installer) با علامت فلش و رنگ نارنجی.

3- در تب Application گزینه Web Deploy form hosting servers را add کنید و سپس نصب را انجام دهید.

4- اگر ویژگی IIS Management Scripts and Tools را قبلا نصب نکرده اید آن را بدین صورت نصب کنید:

start>server manager>add roles and features>server roles

در اینجا لیستی از features های نصب شده را مشاهده میکنید. حالا به نود web server iis بروید سپس گزینه management tools را باز کنید و تیک گزینه iis management scripts and tools را بزنید و نصب را کامل کنید.

پس از نصب میتوانید از service های نصب شده در سیستم عامل مطمئن شوید که سرویس web deployment agent service به صورت run باشد.


تنظیمات publish بر روی iis

1- پنجره باز iis را ببنید و دوباره باز کنید تا تنظیمات اعمال شود.

2- بر روی سایتی که میخواید فایل ها آنجا publish شوند راست کلیک کنید سپس گزینه Deploy و Configure web deploy publishing را کلیک کنید.

3- در پنجره باز شده گزینه Setup را کلیک کنید.

4- در پنجره ای که باز میشود توضیحاتی ارائه میشود و یک فایل با پسوند .publishsettings نیز ساخته میشود که در توضیحات آدرس آن را مشاهده خواهید کرد. (معمولا روی دسکتاپ ساخته میشود.)

این فایل حاوی تنظیماتی است که باید در ویژوال استدیو برای publish پروژه خود وارد نمایید.

5- فایل مذکور را کپی کرده و به سیستمی که روی آن ویژوال استدیو دارید انتقال دهید.

6- بر روی پروژه خود در ویژوال استدیو کلیک راست کرده و گزینه publish را بزنید. (اگر قبلا تنظیمات publish را انجام داده اید روی گزینه create new profile کلیک کنید)

7- در پنجره جدید بر روی import pofile در پایین پنجره کلیک کنید و فایلی که کپی کردید را وارد نمایید.

8- پس از وارد کردن فایل میتوانید با زدن لینک configure برخی ویرایش ها را انجام دهید.

مثلا پسورد سرور را وارد کنید و آن را ذخیره کنید، یا اگر آدرس سرور مشکل دارد آن را اصلاح کنید و یا ترجیح دهید از Ip سرور بجای نام آن در تنظیمات استفاده کنید.

9- سپس publish را انجام دهید.

اگر با خطا مواجه شدید باید ازامکان اتصال به سرور و صحیح بودن ip ها اطمینان حاصل کنید. همچنین میتوانید از ip سرور به جای nameserver ها استفاده کنید.




۱۹ دی ۹۷ ، ۱۲:۰۶ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

امنیت در MVC - جلوگیری از ارسال اطلاعات اضافی در Model

در ورژن های قبلی MVC وقتی در سمت View اطلاعات توسط کاربر وارد میشد و صفحه post میشد در سمت سرور باید مدل را میگرفتیم و تک تک فیلدهای آن را متناظر با فیلدهای مدل مورد نظر خودمان قرار میدادیم که خیلی زمان بر بود. در MVC5 یک ویژگی اضافه شد که اتوماتیک اطلاعات وارد شده در سمت view را map میکرد.

        [HttpPost]
public ActionResult Index(Models.Person person)
{
return View();
}

فرض کنید در مثال بالا مدل Person یک فیلد Name و یک فیلد isAdmin دارد و شما در سمت view فقط یک input قراردادید با نام name وقتی کاربر فرم رو پست میکنه اتوماتیک فیلد Name مدل person برابر با مقدار ورودی کاربر قرار میگیره و bind میشه. اما مشکل اینجاست که اگه یک هکر صفحه view رو تغییر بده و یک checkbox اضافه کنه و فرض کنید به نحوه متوجه بشه که در مدل ما یک فیلد isAdmin نیز وجود داره و نام اون checkbox رو isAdmin بزار به راحتی در سمت سرور مقدار دلخواه وارد isAdmin میشه و کاربر میتونه نقش مدیر رو بگیره.

برای جلوگیری از این کار دستور Bind پیشنهاد میشه که درون اون با دستور include میتوانیم یک لیست سفید درست کنیم و بگوییم فقط این آیتم هایی که ما میگوییم bind شوند و یا توسط Exclude میتوان لیست سیاه درست کرد که در این صورت تمام آیتم ها bind میشوند به جز لیستی که اعلام میشود. مثال:

        [HttpPost]
public ActionResult Index([Bind(Exclude = "IsAdmin")] Models.Person oPerson)
{
return View();
}

در مثال بالا تمامی آیتم های مدل Person میتوانن مقدار دهی شوند به جز فیلد isAdmin حتی اگه در سمت view کنترل مربوط به isAdmin رو هم قرار بدهید باز هم مقدار نمیگیرد.



۲۰ شهریور ۹۵ ، ۱۱:۰۳ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر

T4MVC چیست؟

T4MVC ابزاری است که به کمک آن میتوانید آدرس دهی در سایت خود را Strongly Typed کنید. بدین معنی که بجای اینکه یک آدرس رشته ای بدهید ، داینامیک میتوانید عناصر موجود در سایت خود را مشاهده و به قسمت مورد نظر خود اضافه کنید.

برای نصب این بسته دستور زیر را در Nuget تایپ کنید:

Install-Package T4MVC

برای استفاده از این بسته مثلا میخواهیم آدرس یک Layout را بدهیم که بجای دستور:

Layout = "~/Views/Shared/Layouts/_MasterLayout.cshtml";

مینویسیم:

Layout=MVC.Shared.Views.Layouts._MasterLayout;

از مزیت های این روش سهولت در کار و البته جلوگیری از خطاهای تایپی است.


اما معایب این روش:

بنده به شخصه پس از تجربه کار با T4MVC فعلا به این نتیجه رسیدم که از این بسته استفاده نکنم! به دو دلیل:

اول اینکه پس از نصب و راه اندازی T4MVC تمام کلاسهای شما به Partial و اکشن های شما به Virtual تغییر میکنه که این اصلا برای من خوشایند نبود.

دوم اینکه گاهی اوقات پس از اضافه کردن یک اکشن جدید و Run as custom tool نمودن! t4 خطاهای عجیبی در پروژه پیش میاد.




۱۰ شهریور ۹۵ ، ۰۷:۲۶ ۰ نظر موافقین ۰ مخالفین ۰
احسان احسانی اطهر