* Updates Identity server dependency for preview4
* Infrastructure improvements.
* Updates react versions.
* Updates migrations.
* Makes templates show up in Visual Studio
* Set CSharpLangVersion during runtime compilation
* Pass CSharpLangVersion inferred by the CSharpCompiler to RazorEngine
* Set GenerateRazorHostingAssemblyInfo in Razor.RuntimeCompilation
targets
* Unskip failing test
Fixes https://github.com/aspnet/AspNetCore/issues/8996
VS 16.1 tooling does not support RazorConfigurations with no extensions
Working around this by treating Blazor templates as using MVC configuration
until we can resolve the issue in tooling
Workaround for https://github.com/aspnet/AspNetCore/issues/9119
* Chain coherent dependencies up through Extensions to EF Core packages
- should reduce incoherent PRs we get from `darc`
- react to AspNetCore-Tooling breaking changes
- use C# Preview version in Blazor integration tests
- update `EnsureOptions_ConfiguresDefaultParseOptions` test to match new C# version default
- react to new newline encoding behavior; thanx @ajaybhargavb!
- update product code and tests to use new GetItem API; thanx @NTaylorMullen!
- RazorProjectFileSystem breaking change
- update ref assemblies
- react to EF Core breaking changes
- react to EF Core method rename
- react to aspnet/EntityFrameworkCore@ccfc5edbc7
- react to aspnet/EntityFrameworkCore@6cb41531df breaking change
- disable new analyzer in `ScratchDatabaseFixture`
- skip `MvcTemplate_NoAuthImplAsync(...)` test for F#
- #8996
- exclude some runtime assemblies from crossgen; thanx @BrennanConroy!
- add direct references to Mvc in AzureAD samples
- unclear why the reference is no longer pulled in transitively
* Run `darc` to grab the latest
- CoreFx packages with version 4.6.0-preview4.19204.1 to ensure coherency
- core-setup packages with version 3.0.0-preview4-27604-05 to ensure coherency
- Extensions packages with verisn 3.0.0-preview4.19204.2 to ensure coherency
- EntityFrameworkCore packages with version 3.0.0-preview4.19204.7 from build 20190404.7
- AspNetCore-Tooling packages with version 3.0.0-preview4.19204.2 from build 20190404.2
Use coventional routes for link generation
This change enables using conventional routes for link generation when
using MVC conventional routes. This change makes MVC link generation
behaviour highly compatible with 2.1.
The way that this works is that we create endpoints for **MATCHING**
using the denormalized conventional route, but we tell those endpoints
to suppress link generation.
For link generation we generate a non-matching endpoints per-route with
the same order value.
I added the concept of *required value any* to link generation. This is
needed because for an endpoint to participate in link generation using
RouteValuesAddress it needs to have some required values. These details
are a little fiddly, but I think it's worth doing this feature
completely.
* Move contents of Microsoft.AspNetCore.Components.Services namespace to Microsoft.AspNetCore.Components
* Rename Components to Blazor
* Make Blazor server-side part of the shared framework.
* Rename Host.cshtml to _Host.cshtml
* In Startup.cs, specify root component and selector explicitly so you can easily disable prerendering if desired
* Remove unneccesary dependency on NewtonsoftJson package
* Remove unnecessary MapRazorPages and make blank lines consistent
* Rename "Services" subdirectory to "Data"
* Remove favicon.ico (no longer needed since we switched to MapFallbackToPage
* Revert MapComponentHub change due to reasons
Fixes: #6887 and #6887 and #5624
Adds support for calling Blazor.start({...}) and passing in a
configuration object.
For now all you can configure is the SignalR HubConnectionBuilder. This
is a priority right now because we want to make configuring SignalR's
logging accessible.
* Add a System.Text.Json based TempDataSerializer
* Update DefaultTempDataSerializer
* Add common tests for DefaultTempDataSerializer & BsonTempDataSerializer
* Remove uses of NewtonsoftJson in tests solely required for temp-data support
Fixes https://github.com/aspnet/AspNetCore/issues/7255
* [MVC][Components] Prerendering + Robust reconnect
* Relayers prerendering support on a separate package on top of MVC and
components.
* Implements robust reconects with acknowledgements from the client.
* Improves interactive prerendering with the ability to reconnect to
prerendered components.
* Removes the need to register components statically when prerendering
them.
* Removes the need of using an element selector when prerendering an
interactive component.
* Updates the templates to use the new fallback routing pattern and
reenables the components test.
* Adds eslint to the Typescript project to help maintain a consistent
style.
* Adds logging to support better debugging based on the pattern used by
signalr.
* Fixes exception handling on the server to always report exceptions correctly to the client.
- This change introduces the concept of an IDeveloperPageException filter that runs whenever the developer exception page has encountered an error. It follows the middleware pattern (chain of resposibility) which allows short circuiting or decorating the default logic.
- Added tests
- This makes it a bit cleaner to identify the negotiate when trying to apply policies (like replacing the endpoint)
- Added tests that cover MapConnectionHandler for endpoint routing
These are *new style* for configuring MVC in services. We're adding these to make
things feel a bit more tailored to those particular scenarios.
----
The main reason for this is that we've had repeated community asks for an
*API-optimized* way of configuring MVC. I don't think that using AddMvcCore
is a suitable building block, because it has too many options that you want.
I've think I've identified the reasonable set of features that should be part
of the default experience for APIs. All of these things are already pay-for-play
and are activated by the presence of attributes. The only additional cost is
loading of assemblies and a few additional inspections of the attributes
(cached).
----
Additionally the AddControllers experience is composible. You can add views
to it, or add pages and get the whole thing.
AddRazorPages is basically an alias for what AddMvc does today. We don't
currently have a way to add pages without controllers (the opposite is true).
Based on feedback we could specialize this more.
----
Branding and perception are important, and we've users ask for more flexibility
in what gets added. The plan is to update the templates to use this experience
in preview4, and see what kind of feedback we get.
* Ported HeaderPropagation from aspnet/Extensions
* Introduced Middleware
* Refactored middleware logic
* Refactored builder extensions
* Copyright notice
* Test for friendly exception on Builder
* Fixed header name selection when no output name specified
* Set comparer for the dictionary of headers
* Refactored configuration as Dictionary
* Renamed state objects
* renamed OutboundHeaderName in configuration
* Changed DefaultValuesGenerator to ValueFactory
* Missing docs
* Removed AlwaysAdd and added tests for null entry in configuration
* Improved docs
* Update src/Middleware/HeaderPropagation/src/DependencyInjection/HeaderPropagationExtensions.cs
Co-Authored-By: alefranz <alessio@franceschelli.me>
* Moved dependency injection extensions
* DI: reused ServiceCollection extension in the HttpClientBuilder one
* Moved service registration
* Update src/Middleware/HeaderPropagation/src/HeaderPropagationEntry.cs
Co-Authored-By: alefranz <alessio@franceschelli.me>
* more docs
* Improved docs
* Update src/Middleware/HeaderPropagation/src/HeaderPropagationValues.cs
Co-Authored-By: alefranz <alessio@franceschelli.me>
* Fixed build
* Update eng/SharedFramework.Local.props
Co-Authored-By: alefranz <alessio@franceschelli.me>
* Updated tests for null config
* Reversed condition on HeaderPropagationMessageHandler as suggested
* Added docs for HeaderPropagationMessageHandler
* Changed proj to ship package to NuGet
* Basic implementation of IComponentContext with IsConnected flag
* Update ref assembly code
* Begin infrastructure for prerendered E2E tests
* Actual E2E test for prerendered-to-interactive transition
* Make endpoint middleware explicit
This change makes the endpoint middleware explicit again, and updates
all of the templates.
The other change here is make UseEndpoints be the place where you
register endpoints. This is vital because it puts your code visually at
the point of the pipeline where it executes.
Lastly, I removed support for UseMvc with endpoint routing. This is
causing issues for some security features, and we're moving in the
direction of trying to make the middleware heavy implementation required
in 3.0. There are some issues we won't be able to fix in MVC if we can't
unambiguously know if UseMvc was used or the middleware.
- Also moved the fetching of ANY HTTP header fields until AFTER the most stringent
- Check to see if logging is on (thus deferring work if the logger is sampling).
- Added transfer of TraceState from http header to Activity
- Added tests to insure that we were reading traceparent and tracestate headers as expected.
This resolves the issue blocking use of component parameters from our
ref assemblies. Making properties public with private get is our
recommended guidance for wanting documentation to work in the IDE.
We also now need to manually generate the ref-assembly types for these
so they will show up for tooling with setters. I've logged an issue to
track whether we want to keep this long term, it seems like a suitable
workaround for now.
Fixes: #8609
Currently exceptions thrown during prerendering are simply logged. This
change uses the existing *unhandled exception* mechanism of the
renderer/circuit to throw these. The result is that the developer
exception page just works for prerendering.
* Improved selenium start and tear down
* Selenium is set up and torn down in an assembly fixture.
* Selenium is initialized lazily and in a non-blocking way.
* Selenium processes are tracked as part of the build and their pids
written to a file on disk for cleanup in the event of unexpected
termination of the test process.
* Browser fixture retries with linear backoff to create a remote
driver. Under heavy load (like when we are doing a simultaneous NPM
restore) the selenium server can become unresponsive so we retry
three times, with a longer comand timeout allowance each time up to
a max of 3 minutes.
* Moved test project setup to build time instead of runtime.
* Added target PrepareForTest to create the required files for testing
* The template creation folder.
* The template props file to use our built packages.
* The folder for the custom hive.
* Added assembly metadata attributes to find all the data we need to
run the tests.
* Path to the artifacts shipping packages folder.
* Path to the artifacts non-shipping packages folder.
* Path to the test templates creation folder.
* Path to use for the custom templating hive used in tests.
* Proper cleanup as part of the build
* Remove the test templates creation folder.
* Remove the test packages restore path.
* Recreate the test templates creation folder.
* Recreate the test packages restore path.
* Generated Directory.Build.Props and Directory.Build.Targets in the
test templates creation folder.
* Cleaned up potentially stale templatetestsprops.
* Improved test flows
* Initialization is done lazily and asynchronously.
* Selenium
* Browser fixture
* Template initialization.
* Flattened test flows to avoid assertions inside deep callstacks.
* All assertions happen at the test level with improved error messages.
* With the exception of the migrations assertions.
* Assertions contain information about which step failed, for what
project and what failure details.
* Broke down tests to perform individual steps instead of mixing build
and publish.
* Publish project.
* Build project. (Debug)
* Run built project.
* Run published project.
* Concentrated build logic into the Project class.
* Context between the different steps of a test is maintained in
this class.
* All operations that require coordination are performed within this
class.
* There is a lock for dotnet and a lock for nodejs. When building
SPAs we acquire the nodejs lock to correctly prevent multiple
runs of nodejs in parallel.
[ApiAuthorization template cleanups]
* Fix preview3 issues with breaking changes on Entity framework by
manually configuring the model in ApiAuthorizationDbContext.
* Add app.db to the project file when using local db.
* Fix linting errors on angular template.
* Fix react tests
* Add tests to cover new auth options in the SPA templates.
* Publish MusicStore as part of build
* Add a target to publish MusicStore as part of E2E tests
* Publishing for x86 causes unit tests in MusicStore to have weird
reference issues. Removing these since they are very pretty low value.