Условие и оценяване на изпита по ASP.NET Web Forms 2016


7

Здравейте, файлът с условието можете да намерите тук:

https://github.com/TelerikAcademy/ASP.NET-Web-Forms/tree/master/Exam/2016-YouTube-Playlists

Критериите са качени в системата и оценяването ще е активно веднага щом изпитът приключи.

Както винаги поне 10 оценки за пълния брой точки и краен срок понеделник 10:00.

Класирнето ще пуснем най-вероятно в понеделник следобяд.

Следващият и последен курс (и мой личен фаворит) ASP.NET MVC започва в понеделник от 18:00. Неговата програма можете да намерите на https://github.com/TelerikAcademy/ASP.NET-MVC/blob/master/SCHEDULE.md




Отговори



8

Здравейте колеги,

Включвам се веднага с един бъг на който се натъкнах по време на изпита, и който може да се появи и по време на проверката. Ако имаме следния сценарии:

Проверили сме един изпит, приключили сме с него - изтриваме и замитаме всичко, но забваряме да си изтрием browser history-то и директно сваляме следващия изпит за проверка. Пускаме, seed-ваме, приложението изгрява и се оказва, че ние вече сме log-нати (напрактика login data останала от предишния изпит). Цъкаме на линкчето да влезем в profile-a на user-а и О! Изненада - приложението умира!

Поне при мен това се получава, защото в Profile страницата взимам текущия user през OWIN Context-a и при този сценарии, понеже имаме останали някакви credentials от предния изпит, но реално в новия не сме се логвали OWIN казва греда! (поне аз така си го обяснявам поправете ме ако греша)

Така, че ако пуснете поредния изпит и се окаже, че автоматично сте log-нати - удряйте по един logout. ;)


от Ivan_Nik (933 точки)


5
Точно това Ивайло го обясняваше в една от лекциите. Просто Cookie-то изпратено от този сървър е същото като за следващия изпит, и дори да изтриеш базата или да замениш проекта с друг пак ти изгрява че си логнат с юзер който въобще го няма в базата. Може и cookie-то да се трие, даже май е по-добрия вариант :)

от Moiraine (1100 точки)

2
Това става само ако проектите са хостнати на една и съща машина, понеже Identity системата на ASP.NET 4.5+ ползва криптиране на User credential-ите чрез byte array, purpose("Authentication Token" примерно) и машинен ключ, който е уникален за всяка физическа машина (подкарана под Windows OS). При декриптирането се ползва отново машинен ключ на сървъра и purpose-а, който в нашия случай отново ще е "Authentication Token" и това излъгва системата, че такъв потребител съществува в нашето приложение и ти го показва като логнат.
Ако стартираш сървъра на друга машина, дори да си копирал старото cookie от browser-а - няма да те логне.

от INKolev (4136 точки)


14

Още нещо, за което да се оглеждаме - ако лоудингът се забави повечко и хвърли ексепшън, че не може да се свърже с базата, рестартирайте VS/IIS. Случи ми се на няколко пъти на изпита, и то за първи път - представете си първоначалния шок! :Д

П.С. Ако сте любопитни как оценявате - скриптчето вече 3-ти курс кара :)

var sum = 0; $('form .panel-body input:checked').parent().text().match(/(-)?\d+\.\d+/g).forEach(function(a){sum+= +a}); sum


от dentia (12519 точки)


6

Изпит, който ми се падна да проверявам не ми вървеше, заради версиите на .net. В началото като пуснах проекта ме пита на коя версия да го пусна и аз дадох 4.5.2 за всички проекти в солюшъна, след това ръчно от Properties на всеки проект ги смених на 4.6. Така ми изписваше грешка при стартиране и трябваше в web.config-a да махна

<!--<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"> <providerOption name="CompilerVersion" value="v4.0"/> </compiler>-->

и да добавя <codedom>

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />

Не знам какво правят тия скриптове, но се получи.

Това беше най-добрият изпит, който оцених до момента - над 90 точки. Ще е жалко да получи по-малко точки, заради проблеми с рънването.


от emil_t (210 точки)


0

Здравейте колеги,

Включвам се отново с един жокер. Най-вероятно повечето от вас си го знаят, но аз да си кажа :)

Ако попаднете на изпит където видимо има seed-ване на user-и, но като опитате да се логнете ви гърми Identity-то проверете как се прави seed-ването и дали човекът не вкарва user-ите само през dbContext-a с context.Users.Add() примерно, защото след като user-a се добави през dbContext-a трябва да се извика и userManager.Create() за същия този user! Иначе се получава ситуация при която сме вкарали user-a в базата, но userManager-a си няма представа за което и директно ще ви каже "Аз тоз ни го познаам..." :D


от Ivan_Nik (933 точки)


2
Грешка, userManager-а също минава през базата да го създаде, ако не работи сийдването на user (логването след това) по балъшкия начин без мениджър, значи няма нужните пропъртита като SecurityStamp, PasswordHash или не сте извикали db.SaveChanges, нещо което мениджъра го прави автоматично. В случай, че не може да се създаде през userManager-a значи че конфигурацията с дължината на паролата е оставена на дифолтната, тогава се овърайдват дифолтните настройки в собствена имплементация на manager-a.

от Pip3r4o (3392 точки)

3
Друг възможен проблем: ако при създаването на ролята гърми, то е защото човека ползва UserManager, който by default си има стандартната валидация, човека не проверява IdentityResult и проблема реално е от userManager.Create(), защото парола "admin" не минава и съответно addToRole гърми защото юзър с такова id няма :D