►
From YouTube: ASP.NET Community Standup - April 23rd, 2019 - ASP.NET Architect's View with Ryan Nowak
Description
Join members from the ASP.NET teams for our community standup covering great community contributions for ASP.NET, ASP.NET Core, and more.
Community links for this week: https://www.one-tab.com/page/u2VlIwQBTgCFB78jdMTWtQ
Suggest an idea for a standup: http://aka.ms/dotnet-standup-suggestion
A
Don't
undertand
and
we're
live
I
think
so
excited
to
me.
Okay,
great
and,
of
course,
there's
the
tape
delay
so
I
see
it
here
and
then
I
see
twitch
and
yeah.
We're
absolutely
live
awesome
great.
So
this
is.
This
is
so
great.
Well
welcome,
Ryan
this.
This
was
a
fun
one,
because
we
I
shared
on
Twitter
I
shared
your
your
Indies
or
no
actually
on
the
latest
stand-up
one
of
the
latest
stand-ups
I
shared
your
your
NDC
thing
and
I
was
like
hey.
A
This
didn't
get
enough
attention
and
then
a
bunch
of
people
on
Twitter
like
this
is
awesome.
You
guys
should
get
Ryan
on
and
we
were,
like
he's
been
on,
said
I'm
on
yeah,
so
so
then,
and
and
you
and
Damien
we're
like
hey,
why
don't
we
do
like
an
architect's
view
of
asp
net
yeah,
and
this
is
gonna,
be?
What
I
have
today
is
a
little
bit
similar
to
what
I
talked
about
at
NDC.
It's
not
gonna,
be
the
same
I'm,
trying
not
to
repeat
stuff
when
I
when
I
was
at
NDC.
A
That
was
a
little
bit
of
a
split
dotnet
framework
and
Donna
core
crowd,
and
so
it
was
kind
of
suited
for
that
audience
and
talking
a
little
bit
more
about
what
is
Donna
core.
What
is
Donna
core
NBC
today
we're
gonna
talk
about
some
future
things
and
some
current
things
and
some
you
know
very
soon
things
so.
Okay,
I'll,
hopefully
be
pretty
exciting
for
this
group.
A
Well,
cool
I
am
just
double-checking
here
to
make
sure
sometimes
YouTube
gets
wacky
and
there
it'll
create
like
nope.
That's
right:
okay,
okay,
all
right
good
and
so
before
we
do
I'll
be
showing
the
community
stand-up
links
in
a
second.
But
so
your.
What
is
your
official
like
job
on
this?
So
my
I
mean
I
have
a
lot
of
jobs
that
we
all
have
a
lot
of
jobs
right.
A
My
official
job
title
now
is
principal
software
architect,
which
is
a
pretty
recent
change,
but
you
know
I,
don't
I,
don't
know
I'm,
not
I'm,
not
a
title
guy.
You
know,
I,
don't
think
that
your
title
has
your
job
title
doesn't
define
you.
You
know
I'd
like
to
think
that
I'm
kind
of
I'm
kind
of
everywhere
and
I'm
kind
of
adding
value
where
I
can
and
sometimes
that's
writing
code,
and
sometimes
that's
mentoring,
designing
coaching
strategy,
all
those
kind
of
things.
A
Well,
how
long
have
you
been
on
the
is
peanut
team,
so
I
been
on
the
ASP
Knut
team
now
mm,
maybe
five
years
I
think
I
joined
the
ASP
nut
team
during
the
nbc5
time
for
him,
Nam
and
I've
been
at
Microsoft
now
for
about
11
and
a
half
years?
Oh
cool
yeah,
oh
cool
and
I've
done
a
variety
of
different
things
before
this
I
did
profilers
and
in
compilers
I
did
you
know
a
lot
of
developer
tools,
kind
of
stuff
right?
A
A
Writing
so
previously,
like
I
I,
followed,
he's
been
an
expert
on
like
asp
net
web
pages
which,
which
was
I,
don't
know
a
very
interesting
product,
and
he
was
he
was
basically
the
expert
on
it,
and
so
here
he
is
uniquely
suited
to
kind
of
talk
about
this
here.
Where
he's
he's
saying
razor
pages
is
a
natural
successor
to
web
forms.
So
you
know,
with
this
kind
of
long
history
of
you
know,
Mike's
worked
deeply
on
every
single
asp
net.
A
Flavor
we've
had
available
so
I
I
like
this,
and
this
is
a
a
an
approach
I've
taken
when
I've
talked
about
razor
pages
before
too
I've
talked
about.
You
know,
like
I've
talked
at
conferences,
I,
remember,
dev,
intersections
one
that
came
out
pretty
well
and
I.
You
know
I
was
like
look
if
you've
been
on.
If
you
are
a
web
forms
person
and
you
just
never
kind
of
like
MVC,
never
felt
natural
to
you,
take
a
look
at
razor
pages
and
I
kind
of
you
know.
A
It's
like
this
is
all
the
goodness
of
MVC,
but
it's
like
as
approachable
as
web
forms.
Do
you
want
to
you
want
an
interesting
factoid
about
that?
Let's
hear
it
so
an
interesting
factoid
about
that
when,
when
Damien
and
I
were
designing
Ray's
razor
pages,
my
initial
design
concept
for
didn't
have
on
get
and
had
on
post
it
had
on
load
and
on
submit,
see,
and
that's
that's
the
lineage.
There
is
the
razor
pages
optimizes
or
the
post
post
redirect
get
pattern
and
we
wanted
to.
A
We
wanted
to
I
wanted
to
hide
some
of
the
HTTP
Damien
wanted
to
draw
it
out,
which
is
how
we
ended
up
where
we
are
yep
yeah.
Oh,
can
you
is
there
a
button
for
you,
somebody
saying
in
check?
Can
you
fullscreen
my
screen
as
I'm
sharing
this
yeah?
You
know
I
would
really
like
to
do
that.
But
I
don't
know
what
that
is.
I
can
try
a
bunch
of
them
yeah,
let's
do
it.
This
is
that's
my
thing.
That's
your
screen!
Yeah
I,
don't
know
what
the
nine
that's
me
yeah.
A
They
didn't
tell
me
what
that
button
is.
Is
it
this
one?
Just
don't
push
one
that
says
like
endstream
yeah
there
we
go
there.
That's
me!
That's
me.
Sorry!
Well
done
yep
awesome,
yeah,
we
so
we've
worked
overtime,
James
Montenegro
has
been
doing
all
kinds
of
stuff
to
set
up
to
make
this
kind
of
automated.
We
have
stream
deck.
We
have
all
kinds
of
things:
oh
it
auto
tweets
and
I'm
supposed
to
be
retweeting
it
so
I
should
do
that
too.
A
It's
well
anyhow.
There
there.
It
is
sorry
I
just
need
to
make
sure
so.
People
know
about
this
retweet
and
retweet
ray
okay
back
to
where
we
were
yeah.
So
so
I
think
this
is
great.
You
know
Mike
just
talking
through
if
you've
been,
you
know
if,
if
you've
been
on
web
forums
and
NPCs
has
never
felt
natural
to
you,
this
I
feel
like
this
gives
you
all
the
goodness
of
NBC
under
the
hood.
It's
built.
A
You
look
down
at
the
base
classes
and
everything
it's
still
using
MVC,
but
you've
got
kind
of
that
natural
kind
of
it's
it's
just.
It
takes
a
lot
of
ceremony
out,
though
so
I
think
this
is
a
great
post
goes
through
and
explains
all
the
kind
of
you
know.
Here's
how
it's
similar
and
here's
how
it's
different.
So,
anyhow,
nice
long
post
and
thanks
Mike
for
all
the
great
writing
you
do
on
and
on
okay.
So
here
this
is
cool.
A
This
is
a
first
first
thing
and
I
believe
the
docs
team
is
going
to
be
doing
more
of
these,
but
this
is
a
interactive
tutorial,
based
on
an
ASP
of
from
the
docks,
there's
an
ASP
asp
net
core
tutorial
that
has
you
kind
of
go
through
and
build
a
university
list,
and
it's
using
the
F
core.
So
this
is
actually
as
you
go
through.
This
takes
you
through
all
these
things
where
you
can
sign
in
exactly
exactly
so
this.
A
This
is
going
through
and
doing
things
like
you
know,
teaching
you
about
stuff,
like
user
secrets,
it's
teaching
you
kind
of
all
the
working
with
environment
variables,
so
I
love.
This
I
want
to
see
more
and
more
of
this.
This
might
be
the
one
that
I
worked
on.
I've
been
reached
out
to
you
by
some
people
on
the
docs
team
that
we're
doing
something
here.
It
was
either
so
it's
either
this
one.
A
It's
been
retitled
or
it's
a
separate
like
REST
API
tutorial,
but
these
this
thing
is
very
cool
in
the
cloud
shell,
the
cloud
shell
thing
works
pretty
well,
so
you
don't
have
to
set
up
any
environment
or
have
anything
installed
on
your
machine
to
play
with
this
exactly
yep,
and
this
is
something
we've
all
been
kinda.
If
you're,
you
know
if
you've
got
ideas
as
you're
watching,
if
you
want
to
send
them
to
us
and
chat
or
tweet
them
to
us
or
whatever.
A
The
docs
team
is
very
interested
in
in
this
we're
all
kind
of
excited
about
kind
of
making,
making
things
approachable
and
interactive,
and
so
it's
not
like
okay
I
want
to
do
this
tutorial.
Let's
set
aside
the
afternoon-
and
you
know,
clone
a
big
repo
and
I'll,
you
know
make
sure
I've
got
the
right,
visual
studio
and
like
we'd
love
it
to
be
click,
click,
click
and
you're
learning,
so
cool,
alright
pivotal.
So
this
is
from
David
over
at
pivotal
and
Glenn
Condren
shot
this
over
to
me.
I
think
this
is
cool.
A
This
is
a
post
from
them
on
using
Microsoft
configuration
extensions
for
steel-toe.
So
as
you're
doing
configuration
management,
you
can
use
environment
variables,
but
it's
difficult
to
kind
of
scale
and
manage
that
as
you
build
up
more
complex
systems
and
you
and
you're
dealing
with
you
know
managing
keeping
different
sets
of
configuration
that
are
shared
across
multiple
instances
and
all
that
kind
of
stuff.
Steel-Toe
has
a
system
for
that.
A
So
you
know
here
David
talks
about
like
you
can
build
your
own
configuration
server
and
your
spend
a
lot
of
time
developing
it
and
doing
it
right.
So
this
is
really
cool.
This
is
what
steel-toe
does
they
have
a
cloud
config
system,
and
so
this
walks
you
through
getting
that
set
up
and
reading
from
those
configuration
variables.
So
we've
we've
talked
a
bit
about
this
in
the
past.
I've
shared
some
other
links
on
this.
This
is
a
great
walkthrough
from
David.
A
You
know
kind
of
on
the
on
the
steel-toe
team,
explaining
that
nice,
the
identity
server.
Folks,
just
sharing
this
on
Twitter
I'm
sure
a
million
people
have
said,
wait
where
do
I
find
the
identity
server
based
templates
in
Visual,
Studio
2019.
So
here
it
is
so,
if
you're
trying
to
find
those.
This
is
actually
you
know
this.
These
are
your
steps
here,
it's
the
angular
or
react,
and
then
individual
authentication,
so
in
the
magic
that
these
are
adding
to
you.
A
Adding
is
using
a
using
identity,
server
to
manage
the
authentication
and
make
it
work
with
angular
and
react
Oh
yep
Theo.
This
is
nice.
I
haven't
shared
a
code
project
link
for
a
bit.
So
here
you
go.
This
is
a
custom
logging
provider
in
asp
net
core,
so
he
links
over
to
the
code
on
github
and
then
just
a
nice.
You
know
detailed
walkthrough
of
explaining
building
out
a
login
provider.
A
You
know
building
up
from
the
the
basics
like
the
ilogger
and
logger
provider
and
then
just
kind
of
walking
through
how
to
get
that
set
up
stuff.
Okay,
I
got
some
exciting
ones
here:
Shane
Nigam,
but
yeah.
This
is
really
neat.
So
what
he
did
was
he
built
a
dotnet
global
tool
that
uses
the
azure
CLI
so
he's
actually
building
on
top
of
and
interrupting
with
it
I
chatted
with
him
about
this.
He
is
using
javascript
services
under
the
hood
for
some
of
the
interaction,
and
this
is
really
slick.
A
So
you
can
go
through
and
you
can
see
here
in
his
animated,
gif
you'd
say
dotnet
new
web,
and
then
you
can
do
things
like
dotnet,
azure,
deploy
and
and
create
you
know
like
you,
can
actually
build
and
create
as
your
instances.
So
this
is
really
cool
and
it's
it's
awesome
that
he
did
this
the
right
way.
You
know
like
by
building
on
top
of
the
official
Azure
CLI.
This
gives
you
all
the
goodness.
It's
all
tested
out.
It's
all
you
know
all
that
stuff,
but
you
can
build.
A
You
can
use
it
easily
within
dotnet
global
tools,
so
so
very
cool.
This
is
out
on
github
and
and
I
know,
he's
actively
working
on
this
and
and
building
it
out.
I've
been
seeing
tweets
from
him
on
updates
and,
and
you
know,
improving
it
and
stuff
over
time.
So
if
it
is
shot,
let
us
know
all
right
ahead
on
his
weekly
series.
This
guy
man
he's
written
at
least
a
book,
maybe
two
by
now
cuz
he's
he's
just
kicking
out
these
amazing
posts
every
week.
A
So
this
is
he's
been
doing
an
A
through
Z
series
and
here
he's
out
to
P
for
production
tips.
So
a
lot
of
great
stuff
production
is
something
that
I
feel
like
a
lot
of
time.
Will
kind
of
jump
between
you
know
will
say
here's
how
to
build
a
site.
You
know
here's
all
the
basics
and
stuff
and
then
we'll
skip
ahead
to
like
the
DevOps
stuff
of.
Like
you
know,
I,
don't
know
we.
A
We
don't
really
look
at
the
production
and
deployment
stuff
enough,
sometimes
so,
in
other
words,
we'll
kind
of
pass
that
over
and
in
and
we'll
say,
here's
the
development
side
and
here's
the
you
know,
maintenance
of
an
ongoing
website,
but
then
there's
some
kind
of
like
magic
happens
as
far
as
actually
deploying
so
I
like
here,
some
of
the
things
he
points
out
talks
about
things
like
deployment
slots,
if
you're
not
using
those
you've,
got
to
check
those
out
on
Azure
configuration
is
really
important.
You
know
not
deploying
things.
A
You
know,
making
sure
that
your
user
secrets
are
taking
advantage
of
Azure
features
migrations.
This
is
another
key
thing.
Is
you
know
a
lot
of
time?
It's
very
easy
when
you're
developing
to
just
use
migrations
to
just
you
know,
migrate
up
and
down,
but
that
doesn't
really
work
well
in
production.
So
here
he
talks
about
scripting
out
so
script,
your
migrations
and
you
can
actually
run
those
migrate
migrations
in
production.
You
know
we
just
talked
about
this
today,
actually,
the
rest
here--it.
A
So
I
don't
claim
to
be
the
expert
of
any
of
this,
but
I
thought
it's
interesting
coincidence
that
this
this
hot
topic
was
something
we
spent
a
long
time
on
today
with
the
team,
yeah
yeah,
and
it's
it's
one
that
people
have
definite
strong
opinions
on.
You
know
there's
different
ways
of
managing
some
people
say:
hey
I,
just
run
my
migrations
in
production
works.
A
For
me,
it's
fine
other
people
will
get
very
upset
if
you
try
and
tell
them
that-
and
they
say
no,
you
know
this
is
DBA
work
and
you
know
we
want
to
optimize
our
scripts
and
and
all
that
so
there's
different
ways
to
do
it
and
but
definitely
being
able
to
generate
sequel
scripts
gives
you
a
lot
of
flexibility
there,
so
yeah
great
post
and
then
you
know
going
through
CI
CD.
A
So
I
love
the
detail
that
Chad's
putting
into
these
and
like
I,
said
man
put
a
slap
a
cover
on
it
and
get
someone
with
a
big
forehead
to
write
a
foreword
for
you,
and
you
got
a
book
there,
all
right
so
now
ending
up
with
three
great
official
posts.
These
are
releases
so
here
Daniel
on
the
asp
net,
core
updates
for
dotnet
core
3
preview
for
tons
of
stuff
yeah.
So
you
know
talking
about
you
know
all
the
stuff.
A
You
know
good
I'm,
basically
gonna
say:
go
read
this
post,
you
know
yeah,
so
I
mean
there's
just
tons
of
stuff
in
here
and
a
lot
of
exciting
things,
especially
with
a
razor
and
blazer
there's
GRP
see.
There's
a
worker
SDK,
which
we've
been
showing
a
lot
lately.
I,
don't
know
anything
else
stand
out.
I
will
I
will
point
out
with
this.
If
you
are
interested
in
blazer
and
you
haven't
tried
blazer,
you
should
give
it
a
try.
A
If
you
are,
if
you
have
already
tried
blazer,
there's
some
pretty
big
changes
for
blazer
in
this
release.
If
you
are
looking
to
use
blazer
you
have
been
using
it.
I
would
definitely
go
get
the
vs
16
1
preview,
2
of
16
1.
That
was
just
released
I
think
today,
because
we
had
some
bad
bugs
in
preview,
one
of
16
one
that
we
were
not
able
to
find
in
fix
before
this
release
came
out,
so
it's
kind
of
tricky
for
us
anytime.
A
We
do
things
that
have
an
impact
on
tooling
and
all
the
work
that
we
do
on
razor
blade.
Laser,
definitely
in
fact
impacts
the
razor
editor.
So
if
you
are
going
to
do
blazer
strongly
encourage
you
check
it
out,
if
you
haven't,
go,
get
that
newest
preview
of
yes,
oh
cool,
yep
and
yeah
speaking
of
laser
here's,
the
official
blazer
is
now
an
official
preview.
A
So
this
is
yes
and
actually
has
a
I
forget
what
we
call
these.
It's
not
a
logo.
It's
it's
lazing,
something
it's
a
blazing
at
symbol.
Doesn't
it
is
doesn't
need
a
name,
so
this
is
I'm
embarrassed,
because
when,
when
Daniel
showed
this
to
me,
I
was
like
oh,
it's
cool
and
then
he's
like
I
was
like
what's
the
outside
and
he's
like.
You
know
it's
a
razor
thing.
You
type
some
C
sharp
code
and
what's
wrong
with
you,
so
yes,
and
then
I
feel
done,
but
this
is
this
is
very
cool.
A
I
was
talking
to
him
about
getting
some
swag
printed
up
for
this,
so
that's
cool,
yeah
and
then
just
all
the
stuff
about
you
know
the
what's
in
the
ruler.
What's
in
the
preview
and
stuff
so
yeah
congrats
on
this
I
know,
you've
put
a
ton
of
work
into
blazer
well
and
finally
updated
razor
support
in
Visual,
Studio
code,
yeah,
more
good
stuff.
Finally,
I
think
I
I
think
next
week
we
have
Taylor
on
yeah
he's
talking
about
some
tooling
stuff
and
he's
worked
on
this
too
right.
A
Oh,
that's,
gonna
be
great,
so
shout
outs
I
mean
shout
outs
to
this
to
Taylor.
For
this
because
I
mean
everything
we
do
is
a
little
bit
of
a
team
effort
at
the
least
but
Taylor's
Taylor's
really
been
the
one-man
show
here
with
the
vs
code
stuff
and
he's
been
kind
of
he's
been
kind
of
doing
that
by
himself,
and
it's
been
a
very
long
road
to
get
official
razor
support
and
BS
code
with
blazer
support,
and
it's
better
everyday
and
just
you
know
he
deserves
all
the
kudos.
A
It's
great
he's
worked
very
hard
on
this
I'm
excited
to
have
him
on
Taylor's
Taylor's,
like
he's
just
so
great
to
work
with
he's
a
great
guy.
I,
actually,
first
met
him
at
San
Diego
code
camp.
He
came
down
and
spoke
at
that.
Well,
cool
I'm
done
with
my
links,
so
I
wear
them
out,
but
let's
let's
go
to
you.
Okay
and
I
I
need
to
figure
out
where's
my
there.
It
is
team.
Stop
sharing
good
I
have
gone
to
me.
I
have
gone
to
me,
well
done.
I!
A
Actually
I
actually
have
some
some
cool
slides
here.
So
first
you
know
promoting
myself
I'm
going
on
world
tour
here
in
a
couple
weeks,
which
is
going
to
be
pretty
exciting.
I'm
gonna
be
a
dev
intersection
in
Orlando
with
Brady
and
Jeff
Fritz.
We're
gonna
be
doing
the
Blazer
workshop
there
and
we're
gonna
I'm
going
to
be
speaking
on
blazer
and
then
I'm
gonna
be
doing
the
workshop
again,
the
next
week
in
Oslo
with
Steve
and
then
I'm
gonna
be
immediately
leaving
the
workshop
to
go
to
Spain
and
giving
a
talk
on
blazer
there.
A
A
So
what
I
had
hope
to
talk
about
to
you
today
is
a
little
bit
of
the
future
of
MVC
in
the
future
of
asp,
net
and
kind
of
how
we
see
or
how
I
see
MVC
kind
of
changing
and
evolving
over
the
next
couple
releases
in
the
next
couple
of
years.
So
this
is
going
to
be
a
little
bit.
This
is
going
to
be
a
little
bit
long
term
and
it's
going
to
be
a
little
bit
slow
and
there's
some
of
this.
A
Some
of
this
stuff
is
coming
at
you
and
has
come
at
you
into
to
some
of
its
going
to
come
at
you
in
three.
Oh,
so
that's
some
of
it.
It's
going
to
come
at
you
in
the
future,
but
before
we
dig
into
that,
I
just
want
to
talk
about.
What's
what's
an
IOC
framework
and
I'm
specifically
referring
to
one
use
case,
there
may
be
a
couple
meanings
of
the
term
IOC
framework
and
and
for
me,
I
mean
in
the
context
of
something
like
an
MVC.
You
know
what
is
an
IOC
framework.
A
Is
it's
the
term
by
the
way
I
should
have
written
it
on
the
slide.
It
stands
for
inversion
of
control
and
what
I
mean
by
that
is
that
we
call
your
method.
So,
if
I
make
this
like
do
stuff
method,
I
can
put
some
parameters
in
here
and,
and
the
crux
of
it
is,
it
might
seem,
kind
of
kind
of
stupid
to
take
this
for
granted,
but
the
framework
provides
a
way
to
call
this
method
right
and
that's
the
whole
reason
why
you're
here?
A
The
whole
reason
why
you're
here
is
that
MVC
is
a
fancy
system
that
is
going
to
call
this
method
in
somehow
and
somehow
and
in
some
way
right
and
there's
a
whole
bunch
of
things.
That
kind
of
you
can't
throw
that
by
the
way,
there's
a
whole
bunch
of
things
that
go
into
this
or
sort
of
describe
what
we
mean
when
we
say
that
it's
an
IOC
framework
like
what,
if
I,
have
my
DB
context
here
right
so
something
in
the
framework
I,
don't
have
one
in
this
class
or
in
this
project.
A
So
it's
not
going
to
compile
but,
like
the
framework,
has
got
to
construct
this
thing
via
di
right.
It's
got
to
know
when
to
do
that.
The
framework
has
got
to
describe
when
this
method
is
going
to
get
invoked.
We
call
that
routing
the
framework
has
got
to
decide
what
to
pass
in
for
these
parameters
and
we
would
call
that
model
binding
and
then
the
framework
is
going
to
decide
what
to
do
with
whatever
you
return.
A
We
call
that
an
action
result
in
MVC
and
then
there's
there's
some
kind
of
like
implicit
contracts
that
ride
below
the
surface
here,
which
are
things
like
how
is
validation,
handled?
What's
what's
the
contract
of
this
method
right
so
like
you
could
make
this
method
async,
that's
a
contract
we
support.
But
what
about
you
know
if
you're,
if
you're
a
long
time,
MVC
dev
you're
familiar
with
this
you're
familiar
with
this
pattern
right,
if
model
state
is
valid,
then
I
know
I'm
valid
update
my
database.
A
Otherwise,
you
know
show
the
view
again
to
show
the
error.
So
there's
some
there's
some
other
contracts
here
that
we
give
you
which
are
sort
of
like
well.
If
you're
called
you
might
be
in
a
valid
state,
you
might
be
in
a
non
valid
state.
All
of
those
opinions
or
all
those
things
together
are
kind
of
like
what
we
would
call
MVC
or
what
we
would
call
a
controller.
It's
all
these
little
decisions.
What
method
gets
called?
How
do
we
construct
the
class?
What
arguments
are
passed?
A
What
do
we
do
with
return
value
and
then
any
implicit
contracts
like
error
handling?
So
when
we
think
about
something
like
an
MVC
versus
a
razor
pages,
some
of
these
things
are
different
for
MVC
and
razor
pages.
Right,
like
four
for
razor
pages,
for
instance,
like
we
don't
make,
you
give
us
a
return
value
in
razor
pages.
It's
one
of
the
way
that
razor
pages
optimizes
for
a
particular
scenario.
A
Is
we
assume
that
what
you
want
to
do
is
run
a
view,
because
it's
it's
razor
pages,
that's
what
it
does,
whereas,
like
API
controller,
does
some
things
different.
You
have
this
different
implicit
contract
about
error
handling.
If
you're.
In
a
view,
you
want
to
get
called
with
the
validation
error,
so
you
can
show
them
with
the
user
if
you're
in
an
API,
you
want
the
system
to
give
you
a
boilerplate
response.
These
are
the
ways
in
which
frameworks
like
this
differ.
A
Now,
if
you
think
about
something
like
signal,
are
orgy
RPC,
if
you
dug
into
G
RPC
well,
what's
different
about
that?
What's
different
is
what
method
gets
called
right?
The
method
gets
called
based
on
what
signal
our
hub
method
was
invoked.
What
arguments
are
passed?
Well,
it's
using
a
different
format
to
serialize
that
what
do
we
do
with
the
return
value
well
signal,
our
I
think
doesn't
have
a
return
values
they
might,
and
then
there
are
different
contracts
right
signal.
A
R
has
concepts
like
connections
and
different
things,
so
think
about
these
things
as
we
go
through
and
talk
about
some
of
these
other
kinds
of
concepts
around
mu,
seeing
around
frameworks
in
general,
so
we
don't
call,
you
know,
don't
call
us,
we
call
you
that's
what
makes
this
different
from
a
library
there's,
not
a
method
that
you
call
to
run
your
controller.
Your
controller
is
a
bunch
of
methods
that
we
call
now.
A
The
big
implication
of
all
of
this
is
that
in
MVC,
since
we're
calling
your
method
since
we're
providing
you
the
parameters,
since
we
are
interpreting
the
return
value,
there's
a
lot
more
stuff
for
us
to
break,
but
there's
also
a
lot
more
value
for
us
to
potentially
provide,
because
if
you
slice
your
application-
and
you
ask
yourself
what
percentage
of
the
vertical
of
this
application
is
my
code?
Well,
it
might
be
30%,
it
might
be
40%
depending
on
how
you
think
of
that.
A
So
there's
a
lot
of
things
that
we're
doing
on
your
behalf,
which
is
potential
for
you
for
us
to
give
you
a
lot
of
value,
but
it's
also
a
lot
of
potential
for
us
to
break
you
break
your
stuff
so
like.
If
we
don't
model
bind
correctly,
you
probably
don't
have
too
many
workarounds
for
that.
Is
you
didn't
write
that
code
right?
We
wrote
that
code.
If
we
don't
recall
the
right
method,
there's
not
too
much.
You
can
do
to
unstick
yourself
from
that
situation.
A
Unless
you
know
your
routing
is
messed
up
and
there's
a
workaround,
so
the
stakes
are
kind
of
high
for
all
these
things,
because
it's
not
like
a
method,
you
call
it's
a
method
that
calls
you
so
we
have
to.
We
have
to
sort
of
get
that
stuff
right
so
when
we
think
about
the
evolution
in
the
future
of
NBC
we're
talking
about
many
years
in
many
releases,
because
all
these
changes
can
be
impactful
and
if
we
get
them
wrong,
they
can
really
hurt
we're.
A
Also
thinking
about
areas
that
I
would
call
oh
of
one
impact
and
what
I
mean
by
that
is,
if
you're,
not
a
computer
science
geek,
what
I
mean
by
that
is
like,
let's
say
we're:
gonna
change,
how
you
register
routing,
which
is
a
great
example
as
we
are
so,
let's
say,
we're
gonna
change,
how
you
register
routing
like.
What's
the
impact
on
your
application,
do
you
have
to
go
look
at
every
line
of
code.
Do
you
have
to
replace
every
usage
of
some
API?
The
answer
is
no
right.
It
has
o
of
one
impact.
A
You
got
to
fix
one
section
of
your
app
one
time.
It
would
be
crazy
for
us
to
do
something
like
remove
methods
from
controller
or
remove
functionality
from
RAZR
right
so
because
that
affects
untold
lines
of
code
on
lines
of
code
right.
So
like
it's,
it's
a
good
thing.
It's
a
good
thing
for
us.
If
we
can
add
a
lot
of
value
and
you
have
to
adjust
a
little
bit
in
it
in
this
release
or
in
the
next
release.
It's
a
really
bad
thing.
A
If
you
have
to
delete
your
code
and
start
over
right,
we
never
want
anybody
to
say
I.
Look
at
the
changes
that
you
made
in
this
version
and
I
had
my
only
reaction
was
I
had
to
delete
my
code
and
start
over.
That's,
never!
That's!
Never!
A
good
story,
so
it'd
be
crazy
to
think
about
us
doing
something
like
that
to
controllers
and
views
where
we
just
like
obsolete
the
API
surface
completely
or
something
like
that.
A
So
just
to
set
a
ground
rule
I
mean
we
talked
about
evolving,
growing,
MVC,
adding
functionality,
changing
things,
we're
talking
about,
usually
things
that
are
startup
things
that
are
extensibility
things
that
are
shared
components
that
you
as
an
application.
Author.
Might
only
really
interface
directly
with
in
a
few
places.
Examples.
Oh
it's
more
like
I
have
to
turn
on
or
off
yeah
yeah
flip
a
switch
yeah.
A
So
examples
of
this.
We
have
some
different
ways
that
kind
of
I
think
about
this
now
I'm
going
to
briefly
show
a
demo
at
this
point
and
I'm
not
going
to
do
too
many
of
these,
because
I
did
I
have
a
couple
demos
here,
I'm
just
going
to
show
one
in
particular.
I
showed
this
as
part
of
my
NDC
London
talk.
So
if
you're
interested
in
that
you
can
go
watch
the
video
I
linked
it
on
that
slide
and
I've
got
a
test.
A
I've
got
a
test
page
here
and
before
I
run
any
code
I'm
going
to
show
you
what
we're
talking
about
so
I
have
got
the
wrong
project.
I
have
got
this
bad
input.
Controller
and
I
have
got
this.
Read
awesome,
enum
method
and
I've
got
this
pet
kind.
Ennum.
So
I've
got
a
method
here
that
just
takes
an
enum
and
it's
going
to
be
a
dog,
a
cat
or
fish,
because
I
have
decided
that
those
are
the
only
acceptable
animal
types.
A
And
now,
if
you
look
at
this,
this
is
a
tutu
application,
but
you're
gonna
notice
that
there's
a
version-
oh
here
and
I'm
gonna,
explain
that
I'm
gonna
explain
that
in
a
minute,
so
just
sit
tight.
So
on
my
page
in
my
browser,
I
am
going
to
submit
my
favorite
pet
and
I'm.
A
dog
guy
I
have
two
dogs,
I,
have
a
corgi
and
a
miscellaneous
shelter
dog,
so
I
can
I
can
do
it
and
I
can
say
the
value
is
dog.
Everything
is
fine
right
now.
What?
If?
What?
A
If
the
your
favorite
pet
was
a
cat
we
can
see.
That's
that's
also
fine
right
now
something
else
that
will
work
here,
because
these
are
enums,
and
this
might
surprise
you
is
I
happen
to
know
that
this
is
the
enum
value
of
dog
and
I've
got
this
code
wired
up
to
print
the
value
that
was
submitted
on
the
wire,
so
zero
was
sent
over
the
wire
inside
the
controller
we
get
dog
I'll
prove
that
real
quick.
A
So
we
can
go
in
here,
I'm
going
to
submit
this
again
and
you
can
see
I've
got
dog
here,
even
though
the
value
that
was
submitted
was
zero,
because
these
are
dotnet,
enums
right
and
so
a
dot
nine
enum
can
be
converted
from
an
integer.
Did
you
mean
that
when
you
wrote
this
code
that
you
wanted
to
accept
integers
here,
I,
don't
know,
let's
try
something
else,
so
two
would
be
or
one
would
be
cat
right.
So
we
have
cat
and
of
course,
two
would
be
fish
about
three
three
three
are
we
are
we
valid?
A
We
are
valid,
so
everything
is
fine,
wait.
What
so
into
tin,
OH
and
previous
versions
of
MVC
think
this
was
oh
and
earlier.
We
would
accept
an
enum
value
that,
as
long
as
it
was
convertible
to
any
value
of
that
enum
right
because
enums
are
just
numbers,
we'd,
be
happy
to
say
that
that's
valid.
Did
you
intend
to
allow
like
3
as
valid
input
to
this
API?
Absolutely
not
probably
not
right.
Gee
it'd
be
nice.
If
we
fix
that
problem,
but
who's
who's.
Relying
on
that
behavior
like
wait.
Would
this
be
like
a
binary
super?
A
This
would
be
1
plus
2,
so
this
would
be
a
catfish.
This
is
not
a
flags
enum.
This
is
not
a
but
I
like
where
here
I
like
what
your
head
is
that
I
like
where
your
head
is
at,
so
we
actually
fixed
this
and
we
did
it
with
this
compatibility
version
thing
I'm,
just
gonna
show
I'm
gonna,
show
it
real,
quick
and
then
I'm
gonna
show
I'm
gonna,
explain
it
so,
if
I
put
in
3
now,
this
is
going
to
give
you
a
boilerplate
like
hey.
This
is
a
validation
error.
A
The
value
3
is
invalid
and
so
on,
right,
cool,
so
I'm
gonna
explain
this
compatibility
switch
thing,
so
compatibility
versions
are
a
way
for
us
to
fix
these
little
issues
without,
like
massively
death
by
cout,
seeing
everyone
in
the
world
right.
What's
the
percentage
chance
that
your
application
is
relying
on
this
behavior
right,
I
would
hope
it's
small
if
the
percentage
chance
is
like
0.1%,
how
many
is
being
at
core
applications
are
there.
A
There
are
thousands,
a
good
point,
yeah,
so
somebody's
going
to
be
affected
by
this,
whether
they
wanted
it
or
not
right
so
the
other
problem
with
that
is
like
okay.
So
what
if
you?
What?
If
you
find
out
what,
if
you
upgrade-
and
you
don't
test
this-
because
you
probably
don't
test
this
and
then
you
find
out
that
you
were
actually
relying
on
this
behavior,
then
that's
a
rough
one
too,
because
it's
gonna
affect
you
in
weird
way.
Yeah,
then!
Then?
What
do
you
do
right?
A
Do
you
downgrade
the
application
like
you
have
to
roll
back
two
to
one?
So
so
we
chose
to
use
what
what
I'd
like
to
call
a
soft
hammer
for
these
kind
of
things
right,
so
so,
with
2:1
and
newer,
we
ship
with
this
compatibility
version
setting-
and
this
basically
allows
you
to
for
these
minor
things,
set
what
you
want.
The
expected
compatibility
version
of
the
framework
to
be-
and
this
is
a
tutu
app,
so
I
have
OH
one
two,
as
my
options
right.
The
other
thing
that
I
can
do
here
is
on
NBC
options.
A
I've
got
all
of
these
specific
options
here,
so
suppress
binding
undefined
value,
enum
type,
that's
that
that's
that
option
great
so
I
could
set
this
to
true
and
I.
Could
I
could
fall
back
to
that
earlier?
Behavior
I,
don't
know
if
the
docs
show
up
and
the
ref
assemblies
or
whatnot
okay,
the
doctor
Doc's
are
here
all
right.
Great
I've
written
a
novel
on
all
of
these
properties
also
I've
also
written
a
novel
on
this
compatibility
version.
A
That
explains
exactly
what's
included
in
all
of
these,
so
this
is
a
lot
of
a
practice
that
we
identified
to
help
make
it
easier
to
fix
the
framework
or
of
all
the
framework
in
small
ways.
So
so
do
do
I
anticipate.
Is
there
going
to
be
a
version
300
of
that
flag?
So
there
will
be
a
version
300
of
this
flag.
What
there
will
not
be
is
there
will
not
be
inversion
300.
You
can't
set
this
value
to
two.
So
the
way
I
think
of
this
is
like
we.
A
We
apply
this
when
we
think
about
something
that
is
like.
We
made
a
mistake
or
we
had
a
bug
and
we're
trying
to
move
everybody
to
the
best
version
of
the
framework
right
and
what's
the
best
way
to
do
that,
we
don't
really
want
you
to
show
up.
We
don't
really
want
you
to
get
to
which
is
supposed
to
be
a
minor
version,
and
then
just
have
all
these,
like
things
hit
at
once
that
are
ostensibly
bug
fixes.
So
what
we're
doing
is.
A
Instead,
you
can
use
the
two
libraries
which
will
get
you
a
lot
of
new
features.
You
can
get
on
to
asp
net
as
a
platform
right,
but
you
can
run
into
one
compatibility
mode
for
a
period
of
time
to
make
it
easier
for
you
to
upgrade
and
migrate
and
so
on.
So
that's
one
of
the
things
that
we're
doing
again
and
then
the
the
plan
is
for
all
of
these
things
that
have
compatibility
switches
they
get
removed
in
300
unless
we
have
a
reason
to
keep
it.
A
So
there
have
been
cases
where
we've
said
we're
going
to
keep
an
old
behavior
as
a
non
default
option.
I,
don't
remember
what
case
that
was
just
now,
but
there
was
a
there
was
a
case
where
we
did
something,
and
we
said
basically,
we
have
a
behavior
here.
It's
kind
of
valid
we're
changing
the
default
because
we
think
that
there's
a
better
thing
for
everybody
when
we're
gonna
leave
the
old
behavior
here
is
a
non
default,
so
you
can
opt
into
it.
If
you
want
I,
don't
remember
which
setting.
A
That
was
offhand
so
to
make
sure
I
understand
that
let's
say
I'm
yeah
I
am
I've
got
one
of
the
like
that
enum
binding
I
that
breaks
my
code
right
yeah.
If
and
so
then
I've
set,
you
know,
compatibility
version
to
one
yeah
and
then
when
3oh
comes
out-
and
maybe
three
one
at
some
point-
you
stop
that
compatibility
version
stops
preserving
that
old,
bad
behavior
yeah.
So
so
what
we
do
specifically
for
something
like
three
O
is
we
leave
the
old
versions
in
select.
This
value
is
defined
in
three
O,
but
it's
marked
obsolete.
A
Okay,
so
you'll
get
a
you'll,
get
a
warning.
Saying:
hey!
You
know
we're
not
gonna
stop
your
code
from
compiling,
but
we're
letting
you
know
that
this
doesn't
do
anything
perfect.
Those
these
settings
have
been
removed.
So
so
you
can
think
of
it
like
sort
of
a
delayed
bug
fix
right
because
it
would
be
kind
of
aggressive
for
us
for
some
of
these
kinds
of
things
to
just
blast
them
out
to
everybody
in
the
next
minor
release.
So
it's
kind
of
like
if
there's
something
that
we
think
is
going
to
impact
people.
A
A
When
we
look
at
a
bug
to
say
what
do
we
do
when
we
fix
this
bug,
do
we
fix
it
and
give
you
an
opt-in
to
the
new
behavior
or
do
we
fix
it
and
give
you
an
opt-out
from
the
new
behavior
and
the
answer
is
well,
it's
it's
really
both
right,
depending
on
you
yeah
your
compatibility
version.
This
gives
you
kind
of
the
best
of
both
yeah
yeah,
so
I'm
gonna
drop
back
to
you.
So
that's
compatibility
versions.
A
That's
one
of
the
things
that
we're
doing
other
so
examples
of
this
would
be
all
these
minor
bug
fixes.
If
you're
interested,
you
can
go
f12
on
those
values
and
you
can
see
what
they
are.
Some
medium-sized
breaks
are
things
like.
We
added
support
for
validation,
attributes
on
parameters
in
MVC.
So
did
you
know
that
if
you
had
like
a
string
parameter
in
your
controller
with
the
required
attribute
that
didn't
do
anything
though
cuz
just
about
anything
yeah
where's,
Joe
Strummer,
without
that
well
well,
I
mean
specifically
like
putting
attributes
on
parameters
in
action.
A
Oh,
oh
right,
right
right
to
one
didn't,
do
anything
oops
like,
but
that
was
never
that
wasn't
an
oversight.
It
was
never
in
previous
versions
like
we
never
had
that.
So
we
added
oh,
oh.
So
that
was
something
where
you
can
put
a
parameter
on
an
attribute
anywhere,
that's
great,
but
it
would
just
wasn't
a
wasn't
something
we
looked
at
and
we
never.
We
never
had
support
for
that.
A
We
added
that
into
one,
but
we
knew
that
adding
this
behavior
is
going
to
break
somebody
compatibility
switch
and
there
were
legitimate
things
that
we
broke
when
we
added
that
feature,
because
it's
a
big
impactful
feature,
we
had
to
do
something
that
we're
not
weren't
doing
before.
So
that's
that's
an
example
of
something
I
would
say
is:
is
a
medium
right,
we're
replacing
the
implementation
of
something
with
a
better
implementation.
A
We
know
that
there
might
be
some
problems
with
people
adopting
it
and
we
want
to
fix
them
and
the
way
that
we're
gonna
do,
that
is
with
a
compatibility,
switch
and
giving
you
the
choice
right,
it's
kind
of
like
if
we
want
to
keep
the
framework
changing
and
growing
and
evolving,
and
we
want
to
keep
making
it
into
the
best
version
of
solving
these
problems.
We
have
to
have
a
plan
for
how
we
continue
to
change.
A
Now
we
how
you
can
manage
that
change
and
how
you
can
sort
of
keep
pace
with
what
we're
doing
without
too
much
impact
to
your
your
plans
right
in
terms
of
large
changes.
Large
changes
are,
you
know,
we're
doing
a
large
change
in
300
with
endpoint
routing,
it's
a
new
API
surface
and
a
plan
to
migrate.
So
we
can't
just
delete
old
code,
we're
not
going
to
remove
the
old
routing
system
from
the
universe,
at
least
not
in
three.
A
Oh
and
a
migration
to
new
routing
system
has
to
come
with
migration
Docs,
it
has
to
come
with
analyzers.
In
some
cases
it
has
to
come
with
guidance
about
if
you're
doing
this,
you
now
want
to
do
this
and
it
has
to
really
deliver
some
value,
so
we're
gonna,
we're
gonna
spend
a
little
bit
more
time
talking
about
this
one
by
the
way.
Okay,
so
going
back
just
a
bit,
there's
a
question
in
chat:
Steve's
is
saying:
can
you
not
use
a
name
enum
behind
the
flag
than
in
your
3oh
example?
A
So,
going
back
to
that
example,
where
there
was
the
item
three
which
didn't
match
up
to
an
enum
value,
what
happens
in
three
Oh
in
three?
Oh,
that
will
be
a
validation
error
all
the
time.
Okay,
because
nobody
asked
for
us
to
keep
that
old.
Behavior
right
I
mean
if
you
don't
want
that,
you
can
use
an
integer
right.
A
Okay,
all
right
I
mean
if
you
do.
If
you
do
really
need
that
speak
up,
because
we
can
always
we
can
do
we
can
do
whatever
you
want.
I
mean
yeah.
We
can't
literally
do
whatever
you
want,
but
our
decision-making
on
a
lot
of
these
small
things
is
really
driven
by
what
people
in
the
community
think
is
valuable.
Is
it
more?
Is
it
more
surprising
that
enums
act
like
a
constrained
set
of
values,
or
is
it
more
surprising
than
an
enum
acts
like
an
integer
with
a
name
with
a
type
name
yeah?
A
You
know
I
think
I'm
in
the
former
camp.
As
far
as
my
personal
opinion,
as
far
as
what
the
team
should
do,
my
opinion
matters.
It
matters
a
little
if
people
really
are
vocal
about
I
want
this
to
be
a
setting
and
I
want
it
to
be
configurable,
that's
what
we
would
do,
mm-hmm
yeah.
So
what
you're
explaining
there?
Is
there
a
lot
of
these
things?
It's
a
it's
a
judgment
and
a
value
call,
and
it's
not
a
this
is
right,
and
this
is
wrong.
It's
yeah!
How
does
this?
A
Another
point
about
this
is
kind
of
you
know
my
way
of
driving
home
the
the
discussion
about
doing
these
compatibility
switches
and
minor
versions
and
stuff
part
of
the
motivation
for
compat
switches
is
to
avoid
getting
to
three
Oh
and
having
this
just
like
wave
of
minor
bug,
fixes
that
are
all
breaking
changes
in
behavior,
because
right
because
the
Xenon
thing
there
may
be
five
or
six
others
that
we
could
talk
about.
But
this
this
enum
thing
is
a
minor.
It's
a
breaking
change
right!
It's
gonna
break
somebody.
You
know.
A
We
think
that
it's
worth
it
because
it's
the
best
version
of
this
behavior,
but
it's
not.
We
don't
really
think
that
it's
good
enough
to
just
delay
all
these
things
to
3.0
and
then
have
them
all
hit
at
once
and
say
we
fixed
these
30
things
that
we
wanted
to
fix
and
they
all
resulted
breaking
change.
We
want
to
roll
them
out
gradually
and
slowly
so
that
you
have
a
little
time
to
react
to
the
fact
that
the
old
way
is
not
going
to
be
supportive
yeah,
it
seems
like.
A
Sometimes
people
like
to
use
semver
is
like
a
hey.
Sorry
we
did
a,
we
did
a
breaking
change,
diversion
and
tough
luck.
You
know
we're
gonna,
we're
gonna,
kill
all
your
apps
yeah.
You
know
I
hope
people
expect
better
to
be
honest,
like
I,
hope,
I,
hope,
I,
think
I
think
you
can
expect
better
from
us.
I
hope
you
expect
better
from
us
than
to
just
say
we
broke
your
stuff.
We're
sorry
I
mean
I.
Think
it's
fair
to
ask
us
to
justify
why
something
is
valuable
if
we're
gonna
break
something
yeah
I!
A
Think
for
me,
one
of
the
best
ways
that,
like
I've
known
that
you
folks
do
care
deeply
about.
You
know
not
breaking
people
and
all
that,
but
when
I
see
the
discussion
and
the
the
thought
that
goes
into
every
single
hole
request
an
issue,
it's
like
there's
a
huge
amount
of
like
hey
if
people
are
pushing
back
on
something
they
have
valid
reasons.
Okay,
let's
step
back
and
let's
you
know
so
I
think
that's
really
cool
I
mean
the
example,
the
example
that
I
would
give
recently
was
we
were,
we
were
doing
a
change.
A
We
were
doing
a
security
motivated
change,
privacy
and
security,
motivated
change.
Where
we
were-
and
it's
it's
one
that
I
can
talk
about,
because
we
didn't
feel
like
it's
a
burning
security
thing,
it
was
more
of
a
security
best
practices,
kind
of
change
than
it
is
a.
We
have
a
vulnerability
kind
of
changed,
which
is
why
I'm
talking
about
it.
A
We
we
made
a
change
where
we're
logging,
the
values
of
action,
arguments
into
the
log
at
info
level,
which
is
not,
which
is
against
our
own
guidelines
right.
So
we
does
that
send
the
logs
you
could
could
pass
your
oh,
I
DC
cookie
value
or
your.
You
know
some
kind
of
security
token,
or
something
like
that.
A
If
you
wrote
an
API
that
passed
a
security
token
as
a
string
that
string
would
end
up
in
your
logs,
we
tell
people
to
use
forum
posts
and
Jason,
and
things
like
that
for
security,
because
we
will
log
things
like
guru,
strings
and
curry
strings
and
URLs,
but
we
we
found
a
leak
right
and
a
guy,
a
guy
who
is
really
passionate
about
this
up
in
the
showed
up
in
the
PR
and
said.
Well,
you
can't
just
take
B's
away.
A
A
Oh,
I
would
say
that
the
requirements
when
we
shipped
asp
net
core
100
were
let's
give
people
who
are
used
to
MVC,
5
and
web
api
to
a
landing
pad
or
donek,
or
let's
give
people
a
really
similar,
a
place
to
call
home
if
you're
an
MVC
developer.
What
are
the
requirements
now?
Well,
the
team
owns
three
or
four
different
frameworks
that
we
ship
we
ship.
We
ship
controllers,
we
ship
razor
pages.
We
ship
G
RPC
in
combination
with
the
Google
folks,
we
ship
blazer
other
people
are
shipping.
A
Other
frameworks,
there's
giraffe,
there's
Nancy,
so
there's
the
requirements
are
a
little
bit
different.
Now,
when
you
think
about
some
of
the
things
about
how
MVC
works,
it's
a
little
bit
of
a
different
landscape
if
you're
going
to
be
coupled
to
anything
because
your
requirements,
but
sometimes
your
requirements,
change,
that's
the
best
motivation.
So
so.
Finally,
let's
talk
about
new
stuff
I.
Think
the
future
of
MVC
is
that
the
future
is
a
little
flatter
right
and
by
that
by
that
I
mean
right
now,
you've
got
all
these
app
concerns.
We
talked
about.
A
Right
now,
right
authorization
is
another
big
one,
the
what's,
what's
the
what's
the
way
that
you
do,
authorization
in
our
stack
well
right
now
you
do
MVC
to
do
authorization
or
you
do
signal
art
to
do
authorization,
so
I
think
the
future
is
flatter
because
we're
shipping,
more
frameworks
and
and
third-party
people,
people
in
the
community
are
shipping
more
frameworks
as
well.
So
like
can
we
can
we
squish?
A
Can
we
squish
the
amount
of
layers
and
pull
some
things
out
of
MVC
and
say
these
are
asp
net
features
now
not
MVC
features
I
think
the
future
is
more
sharing
and
the
future
is
more
sort
of
portability.
Like
can
model
binders
work
between
all
of
the
frameworks
that
we
have.
Can
you
just?
Can
we
make
a
model
binder,
be
a
thing
that
you
call
from
code
that
your
same
model
binder
works
in
MVC
and
works
in
signal
R
and
works
in
all
these
different
places?
A
I
think
that
the
future
is
also
thinking
about
controllers
and
razor
pages,
a
little
bit
as
different
things
and
I
don't
want
to
scare
anybody
with
that.
I
know.
I
know
somebody
out.
There
is
scared,
it
might
be
you
John
somebody
up.
There
is
scared,
so
I
don't
want
to
scare
you
that's
why
I
have
that
line
there
with
an
asterisk.
A
A
You
know
response
and
all
that
I
the
other
hand
didn't
we
just
move
from.
We
had
API
controllers
and
MNC
and
rollers,
and
we
mashed
them
together
and
I
have
taken
apart.
What's
going,
we
didn't
take
them
apart.
We
didn't
take
them
okay,
so
we
did
API
controller
I
mean
if
you've
seen
it.
We
did
API
controller
and
do
one
and
it's
an
attribute.
A
So
I
want
to
I
want
to
do
a
couple,
more
slides,
real,
quick
and
then
we're
gonna
talk
about
code
because
I
don't
want
to
I,
don't
want
to
spend
too
long
on
share
slide
where
I
apologize
for
all
the
questions.
Oh,
it's
great!
It's
it's
greater!
How
do
we
get
there
so
most
things
in
MVC
can
be
customized
per
action,
so
most
of
the
customization
that
you
have
is
attributes
on
a
method
attributes
on
a
class.
A
That
means
that
you're
doing
customization
per
action
routing
is
the
engine
that
decides
what
what
action
you
get
to.
So
if
we
want
to
try
and
get
to
this,
this
vision
of
having
MVC's
features
sort
of
be
democratized
for
you
to
use
and
mix
up
in
lots
of
various
ways,
then
we
got
to
think
about
routing
first,
because
that
is
ultimately
your
customization
engine.
How
is
routing
today,
routing
today,
is
a
feature
that
is
probably
only
really
used
by
MVC,
so
it's
probably
only
really
used
by
controllers
and
razor
pages.
A
You
can
technically
use
routing
for
other
things,
but
we
mostly
think
about
it
as
being
used
by
by
controllers
and
razor
page
when
you
get
inside
of
NBC,
that's
kind
of
where
all
the
magic
happens.
So
NBC
has
got
the
primitives
for
how
you
actually
decide
in
action
routing
alone.
Today,
can't
really
do
it
so
I'm
going
to
show
that
I'm
going
to
show
that
real,
quick
and
I've
just
got
this
open
to
show
some
code.
What
sort
of
makes
MVC
different
from
like
a
middleware
is
in
middleware.
A
You
have
a
signature,
that's
like
a
HTTP
context
of
tasks,
kind
of
method,
mm-hmm.
So
the
way
that
this
works
is
we
have
a
routing
middleware.
Actually
I
have
a
diagram
I'm
just
going
to
look
at
the
diagram.
This
is
how
it
works.
So
the
way
that
this
works
is
you
have
the
middleware
pipeline
you
get
to
use
MVC
use.
Mvc
is
actually
the
routing
middleware
right.
You
pull
off
the
mask,
underneath
it's
the
routing
middleware,
the
routing
middleware
is
going
to
call
into
MVC
it's
going
to
call
into
this
guy.
A
This
guy
has
got
the
list
of
action
descriptors,
an
action,
descriptor
sort
of
statically
identifies
what
an
action
is,
and
then
it's
going
to
call
into
an
action
invoker
an
action
invoker
is
a
thing,
that's
kind
of
like
a
middleware
and
it
runs
your
code.
So
everything
that
you
see
oops,
that's
the
wrong
thing.
A
Everything
that
you
see
or
everything
that
we
talked
about
in
terms
of
what
is
an
ifc
framework
is
all
inside
of
that
action,
invoker,
so
model
binding,
creating
the
class
interpreting
the
results
filters,
authorization
cores
all
these
features
are
all
inside
that
that
bucket
right
there
all
sort
of
behind
this
wall
right
now,
yep
an
MVC
is
the
only
thing.
That's
really
got
the
smarts
to
select
an
action
or
define
an
action
right
now
so
and
which
is
part
of
like
when
I
look
at
razor
pages
or
whatever
everything's.
A
It's
all
MVC
classes
under
the
hood
and
namespaces
yes
stuff
right
and
that's
why
and
that's
why
it
is
the
so.
The
other
point
about
razor
pages
is
what's
different
between
razor
pages
and
a
controller.
Well,
razor
pages
is
a
different
kind
of
action
descriptor.
So,
if
I'm
looking
at
the
MVC
code
by
the
way,
so
if
I
bring
up
controller
action,
descriptor,
that's
a
type
that
we
have
so
it's
a
kind
of
action
and
if
I
bring
up
page
action,
descriptor,
that's
a
kind
of
action
right.
A
So
we
we
specialize
what
type
of
action
a
script
or
they
are
and
they
define
different
things.
And
then
they
also
know
surprised
to
find
different
action
invoker's
because
they
kind
of
work
in
different
ways.
So
you
could,
if
you
wanted,
to
use
MVC
to
implement
your
own
kind
of
framework
on
top
of,
but
we
didn't
end
up
doing
that
for
even
our
own
stuff,
because
we
feel
like
it.
It
feels
it
feels
wrong
right.
A
So
you
kind
of
got
this
extensibility
system
for
frameworks
to
plug
into,
but
only
only
really
controllers
and
razor
pages
are
plugged
into
it.
So
enter
endpoint,
routing
and
I'm.
Just
gonna
go
I'm
gonna
go
to
code
because
I
feel,
like
I've,
been
doing
too
many
slides,
and
it
makes
me
sad.
So,
let's
go
to
some
code.
Endpoint
routing
is
a
new
routing
system
that
we're
introducing
in
this
release.
A
A
A
It's
bigger
than
I'd
like
there's,
a
big
set
of
scenarios
that
didn't
work
super
well
for
this
into
I,
am
working
on
making
that
better
in
three,
oh
and
I
would
expect
that
to
be
better
for
just
about
everybody
in
three.
Oh,
so,
if
you
tried
this
into
two
and
you
had
to
turn
it
off
for
whatever
reason
I'd
like
to
hear
from
you,
if
you're
not
happy
with
the
state
of
things
in
3
out,
because
we're
trying
to
address
everybody
scenarios
for
this
and
in
3.0,
so
more
more
will
be
coming
around
this.
A
But
the
thing
the
big
thing
that
people
have
run
into
is
URL
generation
not
working
the
same
way.
That
was
an
intentional
choice
in
to
we
have
reverted
that
it
will
work
the
same
way
pretty
much
exactly
the
same
way
in
304
you.
So
if
you
haven't
seen
this
a
three,
oh
there's,
a
three
Oh
startup
class
and
something
that's
different
here
that
will
jump
out
right
away
is
you've,
got
this
add
controllers
with
views
and
you've
got
this
add
razor
pages.
A
So
what's
that
about
so
we're
introducing
some
different
opinionated,
add
services
methods
that
are
focused
around
different
ways
that
people
use
stuff.
So
one
of
the
things,
what
sort
of
got
us
on
this
path
is:
we've
had
a
lot
a
lot,
a
lot
a
lot.
A
lot
of
requests
for
this
we've
had
a
lot
of
people
request
specifically
I
want
to
have
controllers
and
I
don't
want
to
have
use
I,
specifically,
don't
want
to
have
use
for
the
case
where
you
just
want
really
tidy
on
the
eyes
and
yeah,
and
so
we
try.
A
We
try
to
make
everything
as
pay-for-play
as
possible
in
the
framework,
but
we
have
heard
from
a
lot
of
people
that
it
feels
bad
to
them
to
have
the
full
MVC
stack
available
and
they
want
to
be
sure
that
they're
not
paying
for
anything
that
they're
not
using
now
is
there
a
reason
not
to
have
add
controllers
without
fuse,
because
in
the
past
we've
always
assumed
views
are
included.
You
know,
yeah
I
mean
we
could
call
it
add
controllers.
Without
views,
I
mean
it
doesn't
exactly
roll
I
mean
doesn't
exactly
roll
or
it's
on
right.
A
What
I'm
saying
is
it's
the
assumption
that
when
I
add
controllers
am
I
getting
I,
guess
yeah
I,
don't
know
yeah
I
mean
I'm.
Thinking
about
do.
Am
I
assuming
I'm
getting
views
or
not
when
I'm,
adding
controller
yeah
so
I
would
say,
I
mean
obviously
we're
not
removing
at
MVC,
so
like
yeah,
you're
right
that
MVC
is
still
here.
If
you're
happy
with
this,
and
you
don't
see
on
the
reason
to
change,
don't
change,
that's
obvious
that
I'm
getting
views
with
it
Yesi
add
controllers
with
use,
obviously
gives
you
controllers
and
views
I
mean.
A
So
then,
what's
sorry,
but
what's
the
difference
between
at
NBC
and
add
controllers
with
views
adam
vc,
the
difference
between
add
MVC
and
add
controllers
with
uses
razor
pages-
oh
right,
okay,
so
add
controllers
with
uses.
Give
me
this
is
basically
the
equivalent
to
like
the
101
one
MBC.
So
it's
it's
kind
of
everything
but
razor
pages.
A
A
Well,
my
so,
if
I
take
those
lines,
36
and
37,
is
that
basically
at
NBC?
Yes,
okay,
so
well,
it
will
compose.
So
you
can
do
all
these
things.
I
mean
you
could
do
this
and
it
would.
It
would
be
the
same
right,
okay,
so
what
we're
doing?
What
we're
experimenting
with
in
previews-
and
we
want
feedback
on
this
by
the
way.
Well,
we're
experimenting
with
in
previews
is
where
we
have
templates
that
specialize.
We
have
like
a
razor
pages
template.
We
have
an
MVC
with
news
template
and
we
have
an
API
template.
A
Those
are
the
three
templates
we
have
today
that
include
MVC
right,
so
you'll
find
one
of
each
of
these
things
in
those
templates
now,
and
we
want
people's
feedback
if
it's
the
right
set
of
stuff
that
are
included,
because
we've
definitely
gotten
a
lot
of
feedback
from
people
on
the
API
focused
side
of
the
house
that
they're
looking
for
an
API
focused
thing.
So
we
want
to
provide
that
we
have
heard
fewer.
A
We
have
heard
less
feedback
from
people
that
say:
I
am
interested
in
a
razor
pages,
focused
thing
or
I
am
interested
in
a
controllers
and
views
focused
thing.
So,
since
previews
we
have
created
these
and
if
your
feet,
if,
if
the
feedback
is
extraordinarily
negative
or
the
feedback
is
these
are
confusing,
then
maybe
we
don't
ship
them.
Oh
makes
sense
and
those
are
those
are
all
like
if
I
looked
at
those.
Those
are
just
doing
a
bunch
of
things
that
I
could
do
myself
right,
you're
pulling
together
a
bunch
of
things,
I
mean
they.
A
They
register
a
bunch
of
services,
so
we've
yeah
we've
previously
done
this
other
thing
here
we
have
this,
add
MVC
core
right
and-
and
this
is
something
that
we
didn't
really
promote
to
people.
So
we
added
this
in
in
one,
and
we
didn't
really
promote
this
because
in
general,
when
people
have
engaged
with
it,
they
have
found
it
really
confusing.
A
The
other
thing
that
I
would
say
is
kind
of
a
mistake
here
is
that
things
like
this
are
a
mistake.
So
if
you
don't,
if
you
try
to
use
at
MBC
core-
and
you
don't
have
a
daughter,
ization
authorized
attribute
like
the
goggles-
they
do
nothing
like
it,
just
no
ops
right.
So
that's
a
big
mistake.
So
there
are
some.
We
tried
to
do
this
pretty
early
in
the
product
cycle
and
I
wish.
We
I
wish
we
hadn't
shipped
it.
A
It
has
some
razor-sharp
edges
and
it's
it's
got
it's
like
loyal
following
some
people
like
it,
because
they
like
having
that
level
of
control
I
think
these
things
are
more
about,
like
we're,
gonna,
try
and
find
some
balance
here
with
what
these
options
are
like
and
more
curated
than
just
giving
you
I,
giving
you
MBC
core
builder
and
saying,
like
here's.
A
box
of
Lego's
have
fun
right.
Okay,
so
I
want
to
talk
about
routing
real
quick.
So
this
is
this.
A
Is
your
three
oh
template
and
I've
kind
of
like
removed
some
comments
and
stuff
and
I
have
got
a
couple
middleware
here
and
what
is
probably
gonna
ignore.
What's
commented
out
here
for
for
right
now,
yeah
I'm
sure
that's
not
interesting.
It's
not
know
it
will
become
interesting.
You've
got
this
routing,
middleware
and
then
you've
got
some
stuff
in
between
and
then
you've
got
use
endpoints,
which
is
where
things
are
wired
up.
So
this
is,
you
can
kind
of
think
of
this
as
the
replacement
for
use
MVC.
A
Now,
what's
cool
about
this
use,
endpoints
is
that
you
are
also
going
to
see
all
this
other
stuff
in
it.
So
you're
gonna
see
Blazer
in
here,
you're
gonna
see
a
bunch
of
specialized
things
for
like
spas,
you're
gonna,
see
health
checks
in
here
you're
going
to
see
the
ability
to
wire
up
delegates
in
here,
you're
going
to
see
signal
are
in
here.
If
you
have
a
signal,
our
hub
and
it's
really,
the
reach
of
routing
is
much
broader.
A
Oh,
is
shared
between
all
of
these
different
frameworks,
so
I
want
to
highlight
then
now,
what's
in
the
commented
out
box
and
I'm
just
going
to
run
this
and
we're
gonna
hit
this,
and
we
can
look
at
it
and
talk
about
it,
so
notice
notice
again
that
I've
got
these
lines
here.
I've
got
authentication
and
authorization
inside
my
routing
system
and
so
I
get
in
here
and
I
see
I've
got
an
endpoint
now
an
endpoint.
Is
this
like
new,
primitive
right?
You
can
think
of
an
endpoint
as
like
an
action
descriptor
for
everything
is
this.
A
This
might
be
a
little
too
small,
but
I've
got
I've
got
my
display
name
here
and
I've
hit.
This
is
an
MVC
app
I've
hit
the
home
controller
index.
If
you
can
see
the
tiny
text
inside
this
tooltip
right
and
I've
got
a
request.
Delegate
a
request
delegate
is
a
middleware.
I
can
see
that
I've
got
a
route
right.
That's
this
route,
that
I
wrote
right
here
and
you
can
see
that
I've
got
all
this
stuff
on
this
endpoint.
A
That's
basically
that
gives
me
like
I've
key
bugs
stuff
where
I'm
liking,
like
stepping
into
the
MVC
source,
to
figure
out
what
is
something
not
binding
or
whatever.
This
exposes
that
to
me,
yeah
I
mean
not
for
model
binding,
but
for
routing
yeah,
yeah
routing,
exactly
yeah.
The
other
thing
that
you'll
see
that
I've
got
here
is
I've,
got
all
this
metadata
and
if
I
expand,
this
you'll
see
that
there's
a
bunch
of
stuff
here,
oops
the
budget
stuff
here
so
there's
controller,
attribute
there's
this
is
the
action
descriptor
there's
data
tokens.
A
Now,
if
I
am
it's
a
middleware
and
it's
very
low
level-
and
it
has
basically
no
dependencies
now
if
I
hit
this
health
endpoint,
you
can
see
that
I've
got
my
health
checks
endpoint
and
you
can
see
that
I've
got
the
route
that
I
defined
for
my
health
checks,
endpoint
and
I'll,
basically
going
to
have
no
metadata
right
and
basically
have
no
metadata,
because
there's
not
really
anything
there,
there's
nothing
to
say
about
it.
It's
just
it's
just
an
endpoint,
it's
just
a
middleware!
A
Now
what's
cool
about
this,
is
that
I
can
do
things
with
this.
That
I've
never
been
able
to
do
before,
because
all
these
things
that
plug
in
here
are
as
good
as
an
MVC
action
now
in
terms
of
how
the
system
works,
so
I
can
say:
I
want
authorization
and
I'm
just
gonna.
Do
the
default
policy,
which
is
make
me
make
me
be
logged
in
I,
can
also
do
this,
can
same
app
get
and
let's
go
foo
and
I'm.
Just
gonna
run
some
delegate
here,
I.
A
A
So
let's
do
that
real
quick!
So
that's
my
index
page.
Let's
do
health
right,
so
I'm
right
here,
I
think
I
am
logged
in
and
that's
why
yeah
so
I
got
bounced
too,
though
I
got
this
right
so
that
if
I,
if
we
had
looked
at
that
endpoint,
we
would
have
seen
that
it's,
the
it's
the
the
login
or
it's
the
endpoint
for
the
login
page
would
be
the
one
that
I'm
seeing
there
right
now.
How
does
this
work?
I've
actually
got
another
cool
diagram.
A
So
this
is
a
diagram
of
an
point
routing
in
action
and
compare
and
contrast
this
with
our
2:1
and
earlier
application.
R22
and
earlier
application.
You've
got
this
middleware
pipeline
where
things
happen
and
then
you've
got
MVC
and
you've
got
MVC,
picking
an
action
and
then
you've
got
all
this
functionality.
That
only
happens
inside
of
MVC.
A
Let's
compare
this
to
our
two
two
application
or
a
three
o
application
where
you've
got
middleware
pipeline
and
then
you've
got
routing
happening
here
and
then
you've
got
more
middleware
and
then
you've
got
the
actual
thing
running
at
the
end.
So
the
way
to
think
about
this
is
going
back
to
my
code.
A
This
static
files
and
everything
up
above
here
happen
before
routing.
This
is
the
thing
that
makes
a
decision.
These
are
the
things
that
get
to
see
the
endpoint,
including
my
little
my
little
helper
here
and
then
this
is
the
thing
that
actually
executes
the
endpoint,
so
anything
after
here,
I
could
put
another
middleware
after
here
would
only
run
if
nothing
matched.
A
That
makes
sense.
Am
I
blowing
your
mind
John
you
are.
This
is
making
sense.
People
are
saying
this
seems
simpler
in
a
lot
of
ways
like
so
good
question
in
the
chat
Fredrik
is
saying:
can
use
endpoint
routing
to
do
URL
based
localization?
Yes,
that's
a
great
answer.
Yes,
so
so
remember
we
have
the
localization,
middleware
and
I.
Think
we
ship
a
route
value
based
I
think
we
ship
a
route
value
based
plugin
for
that.
So,
let's,
let's
do
something
else,
because
I
didn't
I
didn't
show
this,
but
it's
totally
it's
totally
a
thing
right.
A
A
So
this
is
gonna
404
cuz
at
first,
because
I've
changed
my
route
and
I
would
come
I
would
I
would
instead
I
would
I
would
define
other
routes
if
I
were
doing
right.
So
you
can
see
that
we've
got
no
endpoint
right
because
we're
still
processing
the
pipeline,
but
nothing
nothing
has
matched.
Therefore,
nothing
will
happen.
So
I
would
say
like
en
home
index
right
and
you
can
see.
I've
got
an
endpoint
now
and
I've
matched
my
home
controller,
but
you
can
also
see
that
I've
got
these
route
values,
and
this
is
the
same.
A
You
know
this
is
the
same
route
value
dictionary
that
you're
used
to,
and
if
you
look
at
this
guy
you'll
see,
I've
got
my
action
controller
and
my
language
right.
Okay,
so
we
have
a
localization,
middleware
and
I.
Believe
we
I
wasn't.
This
isn't
part
of
the
demo
script,
but
it
is
interesting
believe
we
have
an
options
type
here
or
something
localization
options
right
and
then
on
this
we
have
I
think
I'm,
pretty
certain.
We
have
a
route
values
provider
for
this.
So
there's
a
request.
A
Culture
providers
new
route
value
anyway,
so
people
have
tried
to
do
this
before
and
it's
never
worked
well
right.
So
I
would
include
this
as
a
this
is.
This
is
one
of
the
scenarios
that
are
things
that
I
wanted
to
work
really
well
with
this
authorization
is
the
other
thing
that
I
really
wanted
to
work
well
because
there's
been
no
way
to
authorize
arbitrary
code,
so
we
added
health
checks
and
a
lot
of
people
said
great.
How
do
I
secure
my
health
checks?
Endpoints,
yeah
yeah?
It's
health
checks
can
give
away
things.
A
We
don't
want
to
invent
the
universe,
to
create
creation
for
health
checks.
What
I've
seen
with
this
is,
there
are
some
frameworks
out
there
or
some
middleware
out
there
that
provide
like
these
sort
of
Diagnostics
kind
of
things
like
health
checks
and
they
end
up
defining
their
own
security
or
their
own
sort
of
like
routing
systems
within
themselves,
which
is
not
something
that
we
super
want.
A
As
stewards
of
the
platform,
we
prefer
for
everybody's
default
choice
to
be
using
the
authorization
system
that
ships
with
the
framework
unless
you've
got
some
really
strong
reason
not
to
use
those
abstractions,
but
we
hadn't
done
the
work
to
make
it
usable
enough,
so
the
this
is
part
of
that
yeah.
So
hopefully,
hopefully
this
makes
some
things
that
we
already
have
a
lot
more
useful
and
a
lot
more
sort
of
resonance,
if
so,
make
sense,
yeah
and
not
to
derail
too
much.
But
one
of
the
good
questions
Jim's
asking.
A
Can
you
use
endpoint
routing
to
do
version
based
API,
endpoints
yeah,
so
it's
I
mean
that's
kind
of
like
a
standard,
yeah
routing
feature
I
made
use
of
the.
The
answer
is
that
you
can
use
current
routing
to
do
versions,
yeah,
yeah,
routing
right,
so
Chris,
Martinez
who's
who's
at
Microsoft
has
written
a
package.
That's
pretty
popular,
it's
branded
as
a
Microsoft
DSP
nut
package,
but
it's
not
actually
made
by
us.
A
So
it's
like
Microsoft
asp,
net,
core
MVC,
versioning
I
think
it's
called
right
he's
a
friend
of
mine
and
we
work
together
on
this
kind
of
stuff.
So
his
his
versioning
stuff
works
with
old
routing,
a
new
routing,
oh
and
he
was
in
her.
He
was
an
earlier
adopter
of
this,
so
I
want
to
show
one
other
thing
that
we're
doing
here.
I,
don't
know
how
we're
doing
on
time
what
switzer
yeah!
Well,
we
should
wrap
in
the
next
say
five
minutes
all
right.
Let's
wrap
up
in
the
next
five
minutes,
I
want
to
blow.
A
Everybody
should
definitely
get
you
back
on
to
go
deeper
into
this
there.
Okay,
now
keep
on
with
it.
I
want
to
blow
everybody's
mind
with
one
more
thing,
so
something
that
we've
done
recently.
That
I
think
will
hopefully
be
really
popular
with
people,
because
is.
We
should
have
had
this
for
a
long
time
now.
Is
we
now
have
a
own?
Oh,
my
rod
will
be
fine.
We
now
have
extensibility
for
the
developer
exception
page.
What's
your
like
extensibility
for
the
developer
exception
page,
why
would
I
care
about
that?
A
I,
hopefully
am
going
to
make
you
care
about
that.
So
what?
If
you
are
somebody
and
you
are
testing
an
API
and
you're
doing
some
API
development?
Do
you
test
your
API
in
a
browser?
What
do
you
use
to
test
your
API?
Do
you
use
curl
at
the
command
line?
Do
you
use
postman?
Do
you
use
what
sir
I
fiddler,
or
do
you
use
the
browser?
Are
you
old-school
right?
A
Gee
it'd
be
nice
if
we
could
optimize
the
developer,
Eric
exception
scenario
for
the
kinds
of
things
that
people
use
either
by
making
a
different
choice
based
on
the
kind
of
thing
you're
interacting
with
or
make
different
choice
based
on
the
kind
of
client
you
are
so
one
of
the
things
that
we've
done
in
three
Oh.
That
I
think
is
in
preview,
five,
not
preview,
four,
which
is
out
now,
but
the
next
preview,
which
will
be
soon
is
the
ability
to
have
the
developer
exception.
Page
returned
plaintext.
A
If
the
client
doesn't
understand
HTML
now
what
I've
done
here
is
I'm
using
some
new
extensibility.
That's
part
of
the
developer
exception,
page
and
I'm,
doing
my
own
thing
and
I'm,
showing
off
a
little
bit
of
the
power
of
endpoints
again
so
I
have
written
a
developer,
page
exception,
filter,
which
is
the
extensibility
for
the
exception
page,
and
what
I'm
doing
is
I'm
saying
if
the
error
came
from
an
API
controller.
So
what's
the
end
point,
we've
talked
about
end
points.
A
If
the
end
point
has
an
API
controller
attribute,
then
I
want
to
do
Jason,
so
I'm
gonna
write,
Jason
I'm,
going
to
serialize.
This
object
is
Jason,
so
I'm
and
again
this
is
developer
exception
page
it's
only
on
in
development,
so
we're
okay,
you
know
sending
these
information
over
the
wire-
and
this
is
this-
is
that
right?
This
is
that
simple
extensibility,
so
I'll
refresh
my
I'm
just
gonna
refresh
my
page
here.
Real
quick
and
you
can
see
I've
got,
will
step
through.
You
can
see.
I've
got
my
endpoint.
It's
this
throw
action.
A
I
wrote
if
we
look
at
the
metadata,
it's
an
MVC
controller,
so
you
can
see.
I've
got
a
bunch
of
filters
here.
I've
got
an
HP
method,
attribute
HP
get
attribute
and
I've
also
got
this
API
controller
attribute.
So
I
can
write
code,
that's
specialized
on
like
where
this
error
came
from
basically
and
I
can
write
it
as
Jason
and
that's
what
you
see
here,
not
showing
the
raw.
This
is
raw
data.
Okay
and
then
I
could
go
further
with
this.
A
A
If
I
didn't
have
to
do
this
by
hand,
because
we
know
that
obviously
not
important
in
the
case
of
a
developer
exception
page
but
converting
this
object
into
a
string
and
then
writing
the
string
is
about
the
least
efficient
way.
I
could
do
this.
Gee
it'd
be
nice
if
I
could
use
the
facilities
that
are
provided
by
MBC
right
right,
my
serialization
code
in
a
much
more
efficient
way,
so
some
other
things
that
are
kind
of
some
other
things
that
are
kind
of
on
the
roadmap
and
I'm.
A
Just
wrapping
this
up,
the
endpoint
routing
thing
kind
of
has
to
come
first,
because
it's
it's
at
the
heart
of
all
these
customizations
and
all
these
metadata
driven
systems.
What
do
we
want
to
do
next?
Well,
we
want
to
do
things
that
make
things
more
integrated
sort
of
first
right:
that's
why
we're
talking
about
endpoint
routing?
That's,
why
we're
talking
about
off?
A
Let's
take
that
out
of
MVC
and
let's
make
that
a
general-purpose
facility,
so
that
I
could
do
I
could
use
it
in
a
library
or
I
could
use
it
in
some
more
programming
in
the
small
I
know
something
that
a
lot
of
people
have
asked
for
when
they've
seen,
endpoint
routing
is
sort
of
like
okay
great.
How
do
I
make
API
Explorer
open,
API
swagger,
aware
of
my
health
checks
endpoint
right
now
we
have
no
system
for
interfacing
like
a
swagger
interface
with
endpoints.
A
It
could
be
built
no
one's
built
it,
but
maybe
we
do
that
right.
Maybe
we
help
the
existing
swagger
libraries
get
on
get
on
that
train.
So
those
are
some
thoughts
about
things
we
might
do
next.
I
mean
to
me.
These
are
in
order
for
me
personally
of
what
I'd
like
to
do.
I
think
it's
a
I,
think
it's
a
story
that
goes
over
the
next
couple
releases,
very
cool
so
and
I
got
to
the
end
before
we
completely
ran
out
of
time.
A
Well,
wow.
This
is
great
stuff,
and
so
this
was
I
mean
part
of
the
idea
here
was
to
dig
into
some
deeper,
like
architecture
things
and
then
like
you've,
explained
kind
of
the
past
and
the
kind
of
decision
making
process
and
then
future
future
vision
yeah
as
people
are
watching.
Let
us
know
what
more
you'd
like
to
see
and
we
can.
We
can
make
a
series
out
of
this
if
you'd
like
oh
yeah,
right
great,
okay,
well,
we're
definitely
at
time.
Okay,
thank
you.
Thank
you.