Commit Graph

238 Commits

Author SHA1 Message Date
James Newton-King c2d1ab925e
Remove obsolete APIs from routing (#7371) 2019-02-16 18:37:51 +13:00
Justin Kotalik 60b00fa007
Make reads that return canceled ReadResult throw (#7618) 2019-02-15 16:11:57 -08:00
Ryan Nowak f2a1a4542e
Introduce dynamic endpoints and fix #7011 (#7445)
* Add IDynamicEndpointMetadata for dynamic endpoints

* Use a dynamic endpoint policy for pages
2019-02-13 18:52:07 -08:00
Nate McMaster 338de4710a
Automatically set 'PrivateAssets=All' for .Sources references (#7539)
When a `<Reference>` is named `*.Sources`, set PrivateAssets=All (exclude from generated nuspec) and IncludeAssets=ContentFiles (only consume content files, not .dll's)
2019-02-13 14:31:15 -08:00
Nate McMaster 3fd8a97af2
Add targets to generate the list of shared framework assemblies from project property (#7510)
Changes:
* Add support for a property, `IsAspNetCoreApp`, in the .csproj file of assemblies which are part of the shared framework. 
* Remove unused dependencies
* Remove reference which have become part of 'netcoreapp3.0'
2019-02-12 23:00:19 -08:00
David Fowler c1bc210e8e
Fix returning buffered data after stream is drained (#7476)
- Change TryRead to return the buffer if the Stream is completed
2019-02-11 20:45:15 -08:00
Ryan Nowak 5a291d0bc0 Fix #4212 area ambient value page->controller
This change enhances our ambient value logic to also deal with required
values. In 2.2 we introduced a 'required values' semantic to allow route
values to appear "to the left" of a route pattern for the purpose of
ambient values copying. This is a complicated way of saying "when you
like to a different endpoint then discard the ambient values".

What we didn't consider is that some ambient values are special (like
area). So basically, we'll allow an ambient value to be used if it's
part of the required values - even if we've already decided to discard
the ambient values.

This is a pretty surgical fix and only affected the desired scenario
based on tests.

-----

I also removed an optimization that I think is broken. I put an earlier
optimization in place that attempted to count ambient values as they
were "seen" to try and avoid some extra copying. This copying loop has a
cost even if it no-ops which is what I was trying to prevent.

Unfortunately since we added 'required values' - it's now possible for
an ambient value to be double-counted, which makes this optimization
incorrect.
2019-02-11 15:58:33 -08:00
David Fowler 476a1827f4
Made changes to stream <-> pipe adapters (#7407)
- Use the array pool by default when the shared memory pool is specified for both the StreamPipeReader and StreamPipeWriter
- Support allocating unpooled memory if the StreamPipeWriter is asked for memory outside of the max pool size
2019-02-11 11:15:36 -08:00
Joni 9e06cfb7f8 Fix typo in HttpResponseWritingExtensions (#7413)
Fix typo WriteMutliSegmentEncoded => WriteMultiSegmentEncoded
2019-02-09 08:14:11 -08:00
Justin Kotalik 35b99e44ce
Expose HttpResponse PipeWriter in Kestrel (#7110) 2019-02-08 17:24:26 -08:00
Justin Kotalik e3d0dc0a96
Try re-enabling CancellationToken tests for StreamAdapters (#6755) 2019-02-08 10:10:38 -08:00
Justin Kotalik 9e5f09cb44
Make Dispose not throw in StreamPipeWriter (#7376) 2019-02-08 08:44:34 -08:00
Justin Kotalik 3bd5f2c2ab
Return Completed ReadResult after stream returns 0 bytes (#7337) 2019-02-08 08:44:09 -08:00
Hao Kung c9499e14e4
Run helix tests on master (#6728) 2019-02-07 09:20:08 -08:00
Pavel Krymets b21c09665e
Add DisposeAsync support to WebHost and RequestServices (#7091) 2019-02-05 15:42:41 -08:00
Justin Kotalik 9251dfe7c0
Make GetMemory use MaxBufferSize for MemoryPool (#7143) 2019-02-04 13:55:48 -08:00
David Fowler 9f202feafc
Rename IHttpContextContainer to IDefaultHttpContextContainer (#7217)
- Renamed since the property has to be a DefaultHttpContext
2019-02-02 22:31:49 -08:00
David Fowler f3072339de
Handle null attributes in generated delegates (#7210) 2019-02-02 06:18:54 -08:00
Gérald Barré f1b24ccb92 Replace unsafe code with string.Create for hex generation (#6784) 2019-02-01 10:06:20 -08:00
James Newton-King 574be0d22c
Add readonly modifier to readonly structs (#7169) 2019-02-01 15:04:25 +13:00
Justin Kotalik 7d21ee1a5a
Call Slice in GetMemory (#7113) 2019-01-30 14:26:56 -08:00
Justin Kotalik 8f51dd35ce
Make StreamPipeWriter.Complete throw if there is unflushed data (#7115) 2019-01-30 11:22:53 -08:00
James Newton-King 820ea09fdd
Add routing function test with convention builder (#6829) 2019-01-30 09:53:34 +13:00
Justin Kotalik 1222d8de49
Add StartAsync() to HttpResponse; ImplementFeature in Kestrel (#6967) 2019-01-28 17:42:04 -08:00
David Fowler 9f71e60283
Hoist method attributes from the request delegate as metadata. (#6911)
- This should allow a more declarative approach to declaring endpoint metadata using the default methods.
- Attributes are applied first and can be overridden imperatively
2019-01-28 20:38:49 +00:00
David Fowler 14d8e33a93
Remove .Start from BufferSegment (#6832) 2019-01-28 20:37:25 +00:00
Nate McMaster 922512a9fb
Convert the artifacts folder layout to match Arcade (#6850)
Changes:
* IsProductPackage => IsShippingPackage
* artifacts/$config/packages => artifacts/packages/$config
* packages/product => packages/Shipping
* packages/internal => packages/NonShipping
* Renamed MSBuild properties used for output folders
* Update build tools to use 2 spaces in global.json
2019-01-18 13:38:24 -08:00
Nate McMaster 53682c0548
Merge branch 'release/2.2' 2019-01-17 11:01:12 -08:00
James Newton-King 133a7e0414
Add XML docs to endpoint route builder and extensions (#6700) 2019-01-18 07:23:47 +13:00
Justin Kotalik dabd3463ba few extra conflicts 2019-01-16 14:46:39 -08:00
Justin Kotalik e6d547a923 Merge branch 'jkotalik/22temp' into jkotalik/masterMerge 2019-01-16 14:39:10 -08:00
Ryan Nowak 3e5b37f22c Fix #6102 - Intense CPU utilization on page change (#6542)
* Fix #6102 - Intense CPU utilization on page change

The issue here was that every time a Razor Page changed, we would
subscribe an additional time to the endpoint change notifications. This
means that if you tweaked a page 30 times, we would update the address
table 31 times when you save the file. If you were doing a lot of editing
then this would grow to a really large amount of computation.

The fix is to use DataSourceDependentCache, which is an existing utility
type we developed for this purpose. I'm not sure why it wasn't being
used for this already. We're already using DataSourceDependentCache in a
bunch of other places, and it's well tested.

I also tweaked the stucture of this code to be more similar to
EndpointNameAddressScheme. This involved some test changes that all
seemed like good cleanup. The way this was being tested was a little
wonky.

(cherry picked from commit a5658a8c95)
2019-01-15 16:55:27 -08:00
James Newton-King cd308e7a8b
Fix HttpContext not being passed to constraints in link generation (#6644) 2019-01-16 12:00:57 +13:00
Justin Kotalik cdd38d70cf
Implement Stream Adapters (and minor nitpics) (#6583) 2019-01-15 09:00:06 -08:00
John Luo 38c0d5a50c
Use object indirection in HttpContextAccessor (#1066) (#6036) 2019-01-14 20:31:36 -08:00
Ryan Nowak a5658a8c95
Fix #6102 - Intense CPU utilization on page change (#6542)
* Fix #6102 - Intense CPU utilization on page change

The issue here was that every time a Razor Page changed, we would
subscribe an additional time to the endpoint change notifications. This
means that if you tweaked a page 30 times, we would update the address
table 31 times when you save the file. If you were doing a lot of editing
then this would grow to a really large amount of computation.

The fix is to use DataSourceDependentCache, which is an existing utility
type we developed for this purpose. I'm not sure why it wasn't being
used for this already. We're already using DataSourceDependentCache in a
bunch of other places, and it's well tested.

I also tweaked the stucture of this code to be more similar to
EndpointNameAddressScheme. This involved some test changes that all
seemed like good cleanup. The way this was being tested was a little
wonky.
2019-01-13 21:03:26 -08:00
James Newton-King accbcebac0
Support multiple policies for a key with RoutePatternFactory.Pattern (#6593) 2019-01-12 16:00:42 +13:00
James Newton-King 90511e6039
Add HostPolicyMatcher (#6214) 2019-01-11 10:46:09 +13:00
Dávid Kaya 36529e4a34 Removed extra curly bracket (#6558) (#6559) 2019-01-10 10:06:54 -08:00
David Fowler c458fe6ebe
Move request servies feature into DefaultHttpContext (#6541)
- This completely removes the per request allocation until the feature is used.
- In order to make this change viable, we need to introduce a new HttpContextFactory that can accept new services without adding 2^n constructors. As a result, this change introduces a DefaultHttpContextFactory that takes an IServiceProvider and resolves dependencies based on the needs of the DefaultHttpContext and features.
- Throw in the older HttpContextFactory constructor when the IServiceScopeFactory is null
- It also saves us from revving the feature collection version unnecessarily.
2019-01-10 09:54:09 -08:00
Nate McMaster 22f3166fa6
Merge branch 'release/2.1' into release/2.2 2019-01-10 01:22:10 -08:00
Nate McMaster 0f65d44482
Merge branch 'release/2.2' 2019-01-09 18:09:25 -08:00
Hao Kung d7a7c65b2b
Remove old 1.x auth stack (#4485)
* Remove old 1.x auth stack

Fixes https://github.com/aspnet/AspNetCore/issues/3999
2019-01-09 15:56:19 -08:00
Nate McMaster a3f9b74bb9
Merge branch 'release/2.1' into release/2.2 2019-01-09 14:52:53 -08:00
David Fowler ea344bf726
Don't allocate the FormFeature eagerly (#6511)
- Expose FormOptions on DefaultHttpContext
- Use those options on DefaultHttpContext when the FormFeature is initialized
2019-01-09 14:44:41 -08:00
David Fowler a11c68ae35
Remove all extensibility from the DefaultHttpContext (#6504)
- Seal all of the classes
- Remove virtual methods
- Delete pooled HttpContext code
- Removed obsolete AuthenticationManager
2019-01-09 11:37:06 -08:00
Justin Kotalik 5541a7a026
Implement PipeBody Features and add to HttpContext (#6394) 2019-01-08 21:31:50 -08:00
David Fowler 688ad19170
Reuse HttpContext object per HTTP/1 connection and HTTP/2 stream (#6424)
- Today in Kestrel, we reuse the IFeatureCollection per connection and per Http2Stream. This PR aims to take advantage of that same technique and affinitize the HttpContext and friends so that they are only allocated per connection.
- ReusableHttpContext and friends mimic the functionality of DefaultHttpContext but is sealed and has no overridable methods.
- Introduce IHttpContextContainer which allows servers to cache the HttpContext and friends across requests.
2019-01-08 16:54:46 -08:00
James Newton-King aadbed62de
Add event name in routing (#6455) 2019-01-09 12:01:14 +13:00
David Fowler d116ab8550
Remove ObjectPoolProvider from default set of hosting services (#6437)
- Added it where it was being used
- Updated tests
2019-01-08 12:05:48 -08:00
Nate McMaster 5d16f97965
Remove netcoreapp2.0 test TFMs (#6461)
.NET Core 2.0 reached EOL last year. This removes multi-targeting our test projects and test assets to only use .NET Core 2.1 and .NET Framework 4.6.1.
2019-01-08 11:20:09 -08:00
Martin Costello ca7c48c520 Fix ArgumentException from duplicate key (#6416) 2019-01-07 13:42:36 +13:00
Justin Kotalik 3c04338891
Move PipeAdapters to System.IO.Pipelines namespace. (#6325) 2019-01-03 15:58:59 -08:00
Justin Kotalik 910e5ad7e5
Reference InprocessTestSite in CreateDefaultBuilderApp and Disable Failing Tests (#6318) 2019-01-03 08:54:14 -08:00
Pavel Krymets 0ae6cc8e88
Remove InplaceStringBuilder usages (#6163) 2019-01-02 15:50:19 -08:00
Pranav K 94dd5eff21 Fix incorrect Debug.Assert statements 2019-01-02 14:13:46 -08:00
Kristian Hellang a25c7d95e3 Replace custom DateTimeFormatter with ToString("r") or TryFormat (#5695) 2018-12-28 10:01:34 -08:00
James Newton-King 28cf059a3d
Sort endpoint pattern with OrdinalIgnoreCase (#6059) 2018-12-21 10:47:37 +13:00
James Newton-King dbf1dca723
Fix HttpContext not being passed to constraints in link generation (#6045) 2018-12-21 10:19:03 +13:00
James Newton-King 4b12d917ae
Merge branch 'release/2.2' 2018-12-21 07:57:52 +13:00
James Newton-King 4601a26ec2
Fix order in DFA matcher test (#5954) 2018-12-21 07:33:54 +13:00
Nate McMaster 335c9be7b4
Update the artifacts directory organization and simplify publishing targets (#5701)
This simplifies the way that we publish files to our network drop share.

Changes:
* Instead of explicitly listing every file that needs to publish, use directories to classify packages and artifacts into different categories.
* Add documentation for the expected layout of artifacts/
* Remove the need for static analysis to determine which packages go to which project
* Add the MSBuild property "IsProductPackage" to .csproj files which ship as a package to NuGet.org.
2018-12-18 11:40:13 -08:00
Nate McMaster 0cd79cc4c1
Remove unused VS dependencies and old versions of .NET Core from dependencies (#5317)
As a result of removing Razor's VS projects and upgrading all projects to netcoreapp3.0, we no longer need dependency variable for .NET Core 1.x and 2.x and Visual Studio packages.

Changes:
* Remove 'StandardTestTfm'
* Remove variables for .NET Core 1.0, 1.1, 2.0, 2.1, and 2.2
* Remove VSIX variables
* Stop generating 'branding.props' - this hasn't been used in a while and is no longer needed
2018-12-17 16:28:33 -08:00
James Newton-King cc899e2be7
Move EndpointModel and IEndpointConventionBuilder to HTTP abstractions (#4274) 2018-12-17 18:38:49 +13:00
Nate McMaster 02780bac26
Merge branch 'release/2.2' 2018-12-14 16:03:16 -08:00
Nate McMaster feb641ddda
Merge branch 'release/2.1' into release/2.2 2018-12-14 09:44:15 -08:00
Chris Ross 54c1122582
Change HTTP projects to target netcoreapp3.0 #3754 (#4625) 2018-12-14 09:36:57 -08:00
Nate McMaster 13ae0057fb
Replace .Sources package references with local code (#4801)
Replaces package references the following packages with local code:

Microsoft.AspNetCore.Certificates.Generation.Sources
Microsoft.Extensions.CopyOnWriteDictionary.Sources 
Microsoft.Extensions.ClosedGenericMatcher.Sources
Microsoft.Extensions.ObjectMethodExecutor.Sources
Microsoft.Extensions.PropertyActivator.Sources
Microsoft.Extensions.PropertyHelper.Sources
Microsoft.Extensions.RazorViews.Sources
Microsoft.Extensions.SecurityHelper.Sources
Microsoft.Extensions.StackTrace.Sources
Microsoft.Extensions.WebEncoders.Sources
2018-12-14 08:36:36 -08:00
James Newton-King ac1b5c58b0
Fix NU1105 errors in HttpAbstractions.sln (#4608) 2018-12-13 10:15:01 +13:00
Justin Kotalik 226f2c0c2c
Adds MinimumReadThreshold to StreamPipeReader. (#4372) 2018-12-12 13:09:15 -05:00
Nate McMaster d12827e609
Merge branch 'release/2.2' 2018-12-11 18:04:58 -08:00
dotnet-maestro-bot 38785d0be9 [automated] Merge branch 'release/2.1' => 'release/2.2' (#4577)
* Workaround problems when opening solution files in Visual Studio (#4569)

Changes:

* Condense Routing.sln into HttpAbstractions.sln
* Workaround NU1105 by adding all ProjectReferences to the .sln
* Workaround exceptions in the ReferencesHostBridge by moving Reference items to a temporary item group
* Add a 'startvs.cmd' script for launching VS with the right env variables
* Remove RangeHelper test project
* Move RangeHelper tests into StaticFiles.Tests and add target for NPM restore

* Convert Session to use Reference and move to Middleware folder (#4576)

* Add RoutingSample.Web to HttpAbstractions.sln
2018-12-11 16:13:20 -08:00
Nate McMaster 719ff08409
Add RoutingSample.Web to HttpAbstractions.sln 2018-12-11 14:58:05 -08:00
Nate McMaster 5151e7b1ed
Workaround problems when opening solution files in Visual Studio (#4569)
Changes:

* Condense Routing.sln into HttpAbstractions.sln
* Workaround NU1105 by adding all ProjectReferences to the .sln
* Workaround exceptions in the ReferencesHostBridge by moving Reference items to a temporary item group
* Add a 'startvs.cmd' script for launching VS with the right env variables
* Remove RangeHelper test project
* Move RangeHelper tests into StaticFiles.Tests and add target for NPM restore
2018-12-11 14:05:21 -08:00
Ryan Nowak 61d33bed27 Fix failing routing tests 2018-12-10 17:17:58 -08:00
Tornike Kharaishvili d73d95f1d4 CookieSecurePolicy documentation update (#3670) (#4542) 2018-12-09 20:29:40 -08:00
Nate McMaster 85e2147ff0
Merge branch 'release/2.2' 2018-12-07 11:11:44 -08:00
Nate McMaster 569a14ecb8
Merge branch 'release/2.1' into release/2.2 2018-12-06 17:09:03 -08:00
Nate McMaster 5c2a701b38
Remove conditional targetframeworks from routing projects (#4476) 2018-12-06 12:21:05 -08:00
Nate McMaster 50bea05918
Refactor Routing to use ProjectReference and move into src/Http folder (#4441)
Changes:

* Stop producing Microsoft.AspNetCore.Routing.DecisionTree.Sources. I could not find any usages outside of the Microsoft.AspNetCore.Routing assembly, so I've moved this to be a subfolder of code in the Microsoft.AspNetCore.Routing project.
* Stop building src/Routing as a submodule. Use ProjectReference instead
* Move projects from src/Routing into src/Http/Routing/ and src/Http/Routing.Abstractions/
* Update package baselines and dependencies to support building routing projects and samples
2018-12-05 22:14:22 -08:00
Justin Kotalik e9c4c935f6
Remove FlushResultCancellationTests as it isn't relevant (#4435) 2018-12-05 12:05:05 -08:00
Justin Kotalik c06a06d16b
Add StreamPipeReader (#4182) 2018-11-30 09:55:45 -08:00
Nate McMaster ee1e2d6173
Merge the master branch of aspnet/HttpAbstractions 2018-11-20 09:49:01 -08:00
Nate McMaster 0f64aa5c01
Merge aspnet/HttpAbstractions release/2.2 2018-11-20 09:15:59 -08:00
Nate McMaster c199b7a658
Reorganize source code in preparation to move into aspnet/AspNetCore
Prior to reorganization, this source code was found in bc7092a32b
2018-11-20 08:45:03 -08:00
Nate McMaster 0063d5a031
Reorganize source code in preparation to move into aspnet/AspNetCore
Prior to reorganization, this source code was found in 91db78cf92
2018-11-20 08:37:32 -08:00
Nate McMaster 4fcc8b9902
Update targets to build HttpAbstractions projects 2018-11-19 21:34:26 -08:00
Nate McMaster 0ef9993f46
Reorganize source code in preparation to move into aspnet/AspNetCore
Prior to reorganization, this source code was found in d142d58eb4
2018-11-19 21:12:01 -08:00