Category Archives: ASP.NET Core

Blazor – záznam, slides, dema [WUG Brno, 19.6.2019] = dlouhá verze 3:01:30

Záznam z přednášky pro WUG Brno z 19. června 2019. Je publikován na našem HAVIT YouTube Channelu.

Dotčená témata:

  • Blazor intro
  • Blazor hosting model – server-side vs. client-side
  • Supported platforms
  • Blazor Now & Blazor Plans
  • Page
  • Layouts
  • Routing
  • Components
  • Components Lifecycle methods
  • Coded Components
  • Components –Event Handling
  • Built-in Components
  • Data Binding
  • Templated Components
  • Razor Templates
  • JavaScript Interop
  • Invoke .NET from JavaScript
  • Tips & Tricks
  • Novinky ASP.NET Core 3.0

Blazor – záznam, slides, dema [Robert Haken, Corestart 3.0, Update Days 2019]

Záznam z přednášky pro konferenci Corestart 3.0, Update Days 2019 z 6. června 2019. Je publikován na našem HAVIT YouTube Channelu.

Dotčená témata:

  • Blazor intro
  • Blazor hosting model – server-side vs. client-side
  • Supported platforms
  • Page
  • Components
  • Built-in Components
  • Routing
  • Layouts
  • Components –Event Handling
  • Data Binding
  • Coded Components
  • Components Lifecycle methods
  • Templated Components
  • Razor Templates
  • JavaScript Interop

Optimalizace výkonu [ASP].NET + profiling – záznam, slides a dema [Robert Haken, ShowIT SK 2019]

Záznam z mého vystoupení pro ShowIT Bratislava ze 6. února 2019.

Slides a dema:

Dotčená témata:

  • Premature optimisation
  • <compilation debug=“true“/>
  • Data Structures – List, Sorted Arrray (Binary Search), Dictionary, Hashtable, Lookup
  • String Concatentation vs. StringBuilder (Garbage Collection, Large Object Heap)
  • Visual Studio Diagnostic Tools – CPU Profiling, Memory Usage
  • Profiling – Instrumentation vs. Sampling
  • Visual Studio Performace Profiler
  • ANTS Performance Profiler
  • PerfView
  • Windows Performance Analyzer, Windows Performance Recorder
  • Web Applications Caching
    • Data Caching
    • Output Caching

Nahrávka je publikována na našem HAVIT YouTube Channelu.

Novinky v C# 8.0, Visual Studio 2019 a .NET vNext – záznam, dema a slides [Robert Haken, ShowIT SK 2019]

Záznam z mého vystoupení pro ShowIT Bratislava ze 5. února 2019.

Slides a dema:

Dotčená témata:

  • C# 8.0
    • Indices and Ranges
    • Switch Expressions
    • Pattern Matching
    • Static Local Functions
    • Using Declarations
    • Nullable Reference Types
    • Async Streams
    • Target-typed New
    • Default Interface Methods
    • Null Coalescing Operator ??=
  • C# vNext
    • Records
    • Extension Everything
    • Native-Sized Number Types
  • Visual Studio 2019
    • IntelliCode
    • New UI – Startup, New Project, …
  • .NET Framework 4.8
  • .NET Core 2.2, 3.0
  • Entity Framework 2.2, 3.0
  • ASP.NET Core 2.2, 3.0

Nahrávka je publikována na našem HAVIT YouTube Channelu.

HAVIT – Šablona nového projektu WebAPI [Jiří Kanda, HAVIT Vzdělávací okénko, 10.1.2019]

Záznam ze Vzdělávacího okénka HAVIT z 10. ledna 2019, kde Jirka Kanda povídal o šabloně (boilerplate) nového projektu WebAPI (ASP.NET Core), jak ho v HAVITu používáme. Nahlédněte do kuchyně HAVIT…

Nahrávka je publikována na našem HAVIT YouTube Channelu.

Microsoft Developer Days Praha 2018 & Azure DevOps Bootcamp – záznamy z přednášek

Dne 12. listopadu 2018 jsme společně s Microsoftem pořádali vývojářskou konferenci Microsoft Developer Days Praha 2018 & Azure DevOps Bootcamp.

Na našem HAVIT YouTube Channelu vám nabízíme záznamy z většiny prezentací.

Microsoft Developer Days Praha 2018 & Azure DevOps Bootcamp – YouTube playlist:

  1. Keynote: Novinky v .NET 4.8, .NET Core 2.2 a 3.0, C# 8.0 a VS2019 [Robert Haken]
  2. Převod aplikací do kontejnerů [Tomáš Herceg]
  3. Diagnostika pádu ASP.NET Core aplikací [Mirek Holec]
  4. Azure DevOps a GitHub při vývoji DotVVM [Tomáš Herceg]
  5. Azure DevOps Services – pohled do kuchyně HAVIT [Jiří Kanda]
  6. Web Apps in Azure [Jan Hájek]

…toť z ročníku 2018 vše. Ostatní záznamy se buď nepodařily technicky, nebo si přednášející nepřál nahrávání. Od některých přednášek bude k dispozici alternativní záznam na webu WUG.cz s „kamerovým okénkem“.

ASP.NET Core Razor Pages – záznam [Mirek Holec, HAVIT Vzdělávací okénko 7.6.2018]

Záznam ze Vzdělávacího okénka HAVIT ze 7. června 2018, kde Mirek Holec prezentoval přehled ASP.NET Razor Pages:

  • Co jsou Razor Pages
  • Klíčové aspekty (Razor views, PageModel, Routing, Konvence, …)
  • Ukázka aplikace
  • Celkové shrnutí

Nahrávka je publikována na našem HAVIT YouTube Channelu.

ASP.NET Core včera, dnes a zítra [Miroslav Holec, HAVIT Vzdělávací okénko 3.5.2018]

Záznam ze Vzdělávacího okénka HAVIT z 3. května 2018, kde Miroslav Holec prezentoval historii [ASP].NET Core a chystaných novinkách ve verzi 2.1. Nahrávka je publikována na našem HAVIT YouTube Channelu.

Textovou podobu informací najdete na Mirkovo blogu:

CORS a WebAPI

V rámci solution máme dva webové projekty – Web (javascriptová single-page aplikace) a WebAPI (backend s API). v ASP.NET Core 2.0. Řešili jsme problém, že nám nefungoval spolehlivě CORS – javascriptové requesty z Webu nedostávaly správné odpovědi od WebAPI. Chovalo se to velmi podivně i přesto, že lokálně vše fungovalo, a to i když aplikace běžely na různých portech.

Konkrétně:

  • Některé GET requesty fungovaly i v testovacím prostředí, ale POST, PUT a DELETE requesty nikdy.
  • GET requesty browser někdy zdvojoval (zejména v Safari na Macu), první vždy prošel (status code 200) a druhý neprošel (status code 403)
  • V Developer tools v Chrome, ani v Safari nejsou vidět autorizační hlavičky i přesto, že uživatel je přihlášený (při odchycení requestu Fiddlerem tam skutečně jsou). Ovšem na localhostu jsou vidět autorizační hlavičky vždy.

CORS v aplikaci máme nastaven celkem standardně a nepříliš restriktivně:

2018-04-10-CORS-settings

Kde byl(y) problém(y):

Nejdříve jsme neměli povolené všechny hlavičky (pozor zejména na Authorization, která není v Chrome Developer tools defaultně vidět). Nakonec jsme stejně skočili u AllowAnyHeader().

Důležité je mít povoleno AllowCredentials(), pokud řešíte přihlašování

Na co nám nejdéle trvalo přijít je, že je potřeba povolit anonymní autentifikaci i když v aplikaci žádné anonymní požadavky nejsou potřeba (povoluje se to v IIS na obrázku níže). Je potřeba na to ovšem myslet a v aplikaci si ošetřit, že uživatel musí být přihlášen při běžném přístupu do aplikace.

2018-04-10-CORS-IIS

Na pozadí CORS funguje tak, že vzdálený klient nejdříve udělá tzv. preflight request metodou OPTIONS a v hlavičce pošle informace, na jakou URL chce jakou metodou kdo přistupovat. Pokud není povolena anonymní autentifikace, OPTIONS požadavek selže (vrátí 401), protože v hlavičce preflight requestu se dle specifikace https://fetch.spec.whatwg.org/#cors-preflight-fetch autorizační hlavička neposílá. V takovém případě vzdálený klient není schopný zjistit, zda bude mít oprávnění udělat skutečný požadavek, a tak celá komunikace selže (nebo se chová nepředvídatelně – viz podivnosti výše).

Technické podrobnosti např. zde: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Nakonec pro přehlednost ještě schéma posílání CORS požadavků:2018-04-10-CORS-schema