۵ سال و ۱ ماه قبل، دوشنبه ۲۱ مرداد ۱۳۹۸، ساعت ۱۲:۰۷
۵ سال و ۱ ماه قبل، یکشنبه ۲۰ مرداد ۱۳۹۸، ساعت ۱۶:۳۱
یک نکتهی تکمیلی
در ASP.NET Core و کنترلرهای آن میتوان «مثال 2: وهله سازی در صورت نیاز وابستگیهای یک سرویس به کمک Lazy loading» را به صورت زیر نیز پیاده سازی کرد:
public async Task<IActionResult> Index( [FromServices] MusicStoreContext dbContext, [FromServices] IMemoryCache cache)
۵ سال و ۱ ماه قبل، شنبه ۱۹ مرداد ۱۳۹۸، ساعت ۱۷:۲۰
ارتقاء به ASP.NET Core 3.0 : تغییرات مورد نیاز در فایل آغازین برنامه جهت ارتقاء به Endpoint routing
اگر در نگارش 2.2، فایل کلاس آغازین برنامهی شما چنین شکلی را دارد:
در نگارش 3x به صورت زیر تغییر میکند:
نکاتی که در اینجا حائز اهمیت هستند:
- متد UseRouting اضافه شدهاست.
- UseStaticFiles (در صورت نیاز) باید قبل از UseRouting فراخوانی شود.
- اگر برنامهی شما به مباحث اعتبارسنجی پرداخته و در کنترلرهای آن از فیلتر Authorize استفاده میشود، دو تغییر مهم فراخوانی UseAuthentication و سپس UseAuthorization (که این مورد جدید هست) را پس از فراخوانی UseRouting باید انجام دهید. در غیر اینصورت در حین مرور این صفحات و قسمتهای محافظت شده، برنامه با خطای زیر متوقف خواهد شد:
- محل فراخوانی UseCors را (در صورت نیاز) دقیقا مطابق کدهای فوق و به ترتیبی که ذکر شده باید انجام دهید.
- متدهای UseMvc و یا UseSignalR قبلی، به متد UseEndpoints تبدیل شدهاند.
اگر در نگارش 2.2، فایل کلاس آغازین برنامهی شما چنین شکلی را دارد:
public void Configure(IApplicationBuilder app) { ... app.UseStaticFiles(); app.UseAuthentication(); app.UseSignalR(hubs => { hubs.MapHub<ChatHub>("/chat"); }); app.UseMvc(routes => { routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); }
public void Configure(IApplicationBuilder app) { ... app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseCors(); app.UseEndpoints(endpoints => { endpoints.MapHub<ChatHub>("/chat"); endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); }
- متد UseRouting اضافه شدهاست.
- UseStaticFiles (در صورت نیاز) باید قبل از UseRouting فراخوانی شود.
- اگر برنامهی شما به مباحث اعتبارسنجی پرداخته و در کنترلرهای آن از فیلتر Authorize استفاده میشود، دو تغییر مهم فراخوانی UseAuthentication و سپس UseAuthorization (که این مورد جدید هست) را پس از فراخوانی UseRouting باید انجام دهید. در غیر اینصورت در حین مرور این صفحات و قسمتهای محافظت شده، برنامه با خطای زیر متوقف خواهد شد:
Endpoint xyz contains authorization metadata, but a middleware was not found that supports authorization. Configure your application startup by adding app.UseAuthorization() inside the call to Configure(..) in the application startup code.
- متدهای UseMvc و یا UseSignalR قبلی، به متد UseEndpoints تبدیل شدهاند.
۵ سال و ۱ ماه قبل، شنبه ۱۹ مرداد ۱۳۹۸، ساعت ۱۷:۰۴
یک نکتهی تکمیلی
ممکن است در حین اجرای عملیات تولید کلاسهای Migrations در NET Core 3.0. به خطای «ارجاعی به اسمبلی Microsoft.EntityFrameworkCore.Design در پروژهی آغازین برنامه وجود ندارد» بخورید. برای رفع آن نیازی نیست تا این ارجاع را به پروژهی اصلی اضافه کنید. فقط سطر قبلی زیر را
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0-preview7.19362.6" PrivateAssets="all" />
۵ سال و ۱ ماه قبل، شنبه ۱۹ مرداد ۱۳۹۸، ساعت ۱۳:۱۷
۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۱۷:۰۲
- مطلب آن فرد هندی که لینک دادید، به نظر از این مطلب استفاده کرده.
- برای دسترسی به اکشن متدهای محافظت شدهی با ویژگی خالی Authorize (بدون هیچگونه تنظیم دیگری)، تنها وجود شرط ورود به سیستم کافی است. اگر Policy یا Role خاصی بر روی آنها اعمال شود، آنگاه آن شخص باید User Claims ویژهای را داشته باشد تا بتواند شرایط آن Policy را تامین کند. در مورد نوشتن انواع و اقسام Policyهای سفارشی (چه بر اساس شرایط User Claims ثابت (policy => policy.RequireClaim) و چه پویا که به همراه AuthorizationHandlerها هستند) در این مطلب بحث شده و شما محدود به تنظیمات پیشفرض پروژه نیستید.
- مطلب «تنظیمات کش توزیع شدهی مبتنی بر SQL Server در ASP.NET Core» و خصوصا نظرات آنرا مطالعه کنید.
۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۱۵:۳۷
یک نکتهی تکمیلی
خود مایکروسافت هم لیست خطاهای ممکن را به همراه راه حلهای پیشنهادی، مستند کردهاست.
۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۰۲:۵۲
این هدرها به هر فایلی که توسط مرورگر درخواست شود و از کش خوانده نشود، اضافه میشود.
۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۰۱:۰۹
- هدف از بررسی HttpContext.Request.IsLocal در قطعه کدها و یا "pattern="localhost" negate="true در الگوهای web.config عنوان شده، عدم اعمال این تنظیم به localhost هست تا چنین مشکلی رخ ندهد.
- اگر قصد آزمایش www.localhost را دارید، همان کاری را که در یک هاست واقعی با تنظیم DNSها انجام میدهید، اینجا هم باید انجام دهید؛ یعنی www.localhost باید به 127.0.0.1 نگاشت شود. برای انجام اینکار به صورت محلی، notepad را با دسترسی ادمین اجرا کنید (این مورد برای ذخیره کردن تغییرات در فایل hosts ضروری است). سپس فایل C:\Windows\System32\drivers\etc\hosts را در آن باز کرده و یک سطر زیر را به آن اضافه و ذخیره کنید. سپس سیستم را ری استارت کنید:
127.0.0.1 www.localhost