Commit Graph

134 Commits

Author SHA1 Message Date
jacalvar ee2a591d2c [Fixes #4655] Make comparisons in DefaultAssemblyPartDiscoveryProvider case insensitive 2016-05-20 11:22:55 -07:00
jacalvar a490cf13a6 [Fixes #4555] Assemblies with a transitive dependency to MVC are not included as part of the list of discovered assemblies 2016-05-20 11:18:34 -07:00
jacalvar b1054a28c7 [Fixes #4353] Cleanup application part discovery 2016-05-20 10:56:03 -07:00
Kiran Challa 20a2e748ec Added ValueProviderFactories to ResourceFilterExecutingContext
This enables removing value provider factories from model binding(which is needed in some scenarios like large file uploads)
2016-05-20 04:15:07 -07:00
mnltejaswini df4eb283b2 [Perf] UrlHelper shares a single RouteValueDictionary across several calls to Action and RouteUrl methods 2016-05-19 16:15:46 -07:00
mnltejaswini d7ccea17ce [Perf] Refactoring ControllerActionInvoker to avoid coercing action method's return type to Task<object> for simple cases. Fixes #4539 2016-05-19 14:21:29 -07:00
mnltejaswini 74357b3ed8 [Perf] Fast Generate Url for specific cases to avoid string allocations 2016-05-18 18:08:25 -07:00
Ryan Brandenburg 941da9264b Move ModelBindingHelper to Internal (#4664) 2016-05-18 16:52:43 -07:00
Kristian Hellang 230776f4b0 Added Permanent property to configure RequireHttpsAttribute
Fixes #4561
2016-05-16 16:18:53 -07:00
mnltejaswini 61a176e478 [Perf] Cache the default values for action arguments to avoid Activator.CreateInstance per argument.
Fixes #4470
2016-05-16 11:43:34 -07:00
mnltejaswini 0e4b838864 [Perf] Replace Activator.CreateInstance with cached delegate in Model Binders
Fixes Part1 of #4470
2016-05-16 11:26:33 -07:00
Ryan Nowak 1e02fd2e6b Merge invoker back into one class
This will help future generations maintain this class. Notice that the
protected methods that are going away all just call into another
extensibility point (other than the executor). If we need to we could make
that extensible in the future and then we have the same support with fewer
hooks and less complexity.
2016-05-13 17:43:59 -07:00
Ryan Nowak 51e133ab9f Add asserts to DiagnosticSource 2016-05-13 15:05:35 -07:00
Ryan Nowak 652e330875 Fix #4631 and avoid Task<T> creation in invoker
This change corrects and ordering bug between the creation of the
'context' and the diagnostic source event that occurs before a synchronous
filter's 'after' stage.

Also made some simple changes to avoid allocating Task<T> in many common
cases. Now we'll only create the Task<T> when we really need it (async
filters).
2016-05-13 08:53:56 -07:00
Ryan Nowak 128d74e2a0 Refactor Argument Binder
This change just rearranges some code in the argument binder with a mind
towards performance and clarity. We're removing a few Task<T>'s here as
well in certain cases, but not yet all of them. We additionally save a
dictionary in the case where you have bound properties.

Hopefully these changes break the code into more discrete and sensible
units without multiple levels of indirection without abstraction.
- Main 'driver' code
- BindModel
- ActivateProperty
2016-05-13 08:12:14 -07:00
Ryan Nowak 4d63ffa879 Make ValueProvider creation lazy
We want this change to avoid MVC eagerly reading the form. This is good
for general perf and also for scenarios where you want read the body
yourself (large file uploads).

We DO have scenarios where you want to configure the value providers
per-request or also to change the limits on the value providers (form) so
it's worth keeping these around on the context.
2016-05-13 08:11:21 -07:00
Kiran Challa e483478415 Merge branch 'release' into dev 2016-05-12 09:35:33 -07:00
Ryan Nowak fb5d92bdc0 Change our cached task to a field
This makes it more inlinable and saves a volatile lookup on netstandard.
2016-05-11 18:09:21 -07:00
Ryan Nowak 04ffc4d2eb Clean up DiagnosticSource code in invoker 2016-05-11 17:41:03 -07:00
Kiran Challa d6a9068008 [Fixes #4616] Filter caching is too aggressive 2016-05-11 16:58:45 -07:00
Ryan Nowak 7bd297c395 Remove unused field 2016-05-11 16:48:55 -07:00
Kiran Challa 3c2bdfd368 Merge branch 'release' into dev 2016-05-03 12:29:33 -07:00
Kristian Hellang f4679fe74f Changed RequireHttpsAttribute to default to 302 instead of 301 2016-05-03 12:11:18 -07:00
David Obando 742a9e3f3b Reduce the number of allocations during model validation
When the service receives a model (say, via a POST message) MVC validates it to ensure the model is in a correct state. Validation currently incurs in many allocations that can be avoided. This tackles two of them:
  1. We're now caching the generic `GetEnumerator<T>` method infos generated on the fly during collection validation, and
  2. We're now only initializing `ModelErrorCollection` on demand.

The first one incurs in the additional allocation of 1 long-lived dictionary object, which will grow only to the amount of `Collection<T>` types used by the model being validated. This is expected to be a small to medium number.

The second change assumes that class `ModelStateEntry` isn't thread safe, as model validation isn't multithreaded.

This resolves #4434 and #4435.
2016-05-02 19:28:20 -07:00
Ryan Brandenburg c6a6aae15f Merge branch 'release' into dev 2016-05-02 16:52:29 -07:00
Ryan Brandenburg 3aa42617a4 Add transitive reference 2016-05-02 16:49:57 -07:00
Pranav K 3d494fd732 Merge branch 'release' into dev 2016-05-02 14:58:54 -07:00
Pranav K 36146a6139 Fix build warnings 2016-05-02 14:52:02 -07:00
Kiran Challa d30290c310 Merge branch 'release' into dev 2016-05-02 13:36:35 -07:00
Kiran Challa ad065892fd [Fixes #4575] Logging ArgumentOutOfRangeException 2016-05-02 13:16:08 -07:00
Filip W f567258f14 changed GetFormat to virtual 2016-04-27 18:08:45 -07:00
mnltejaswini 0788edbd4b [Perf] Cache the metadata for known type "object"
Fixes #4377
2016-04-25 13:03:52 -07:00
Ryan Nowak 756cd2dab8 Remove OperationBindingContext
This change trims a few concepts that aren't really needed inside
ModelBinders anymore, and removes the OperationBindingContext class.
2016-04-25 09:29:03 -07:00
Kiran Challa 4e8e30437f Merge branch 'release' into dev 2016-04-23 06:57:08 -07:00
Ryan Nowak af58c2e6b6 Streamlining action selection and route values
Removes a few concepts we don't need
Improves documentation
More things are IDictionary instead of other random types
2016-04-22 17:36:23 -07:00
Kiran Challa a259638d79 Filters provided by filter providers are made to never be cached
[Fixes #4504] Possible double-execution of filter providers
2016-04-22 16:56:08 -07:00
Sebastien Ros 4b4d67e48e Merge branch 'release' into dev 2016-04-22 11:54:56 -07:00
Sébastien Ros 2c639f83c4 Fixing BindNever attribute and Type model binding
Fixes #4505
2016-04-22 11:52:08 -07:00
Ryan Nowak 8efd12187c Remove unused interface 2016-04-21 14:01:46 -07:00
jacalvar 683356ea59 Merge branch 'release' into dev 2016-04-21 10:39:45 -07:00
Ryan Nowak 87704c67e1 React to routing cleanup 2016-04-21 07:55:20 -07:00
jacalvar d9aacd0f87 [Fixes 4509] Stop registering disposable objects in our controller helper methods 2016-04-20 17:00:34 -07:00
mnltejaswini 73dc7bf48b [Perf] Check for Logger.IsEnabled in logging methods of MvcCoreLoggerExtensions
Fixes #4466
2016-04-19 11:49:56 -07:00
mnltejaswini 4e97c72eeb [Perf]:Cache TypeConverters in SimpleTypeModelBinder
Fixes #4361
2016-04-15 18:23:49 -07:00
Doug Bunting ee2cfa1963 Merge remote-tracking branch 'origin/release' into dev 2016-04-13 16:04:14 -07:00
Doug Bunting eda647e270 Complete the doc comments for filters
- #3851
- add lots of words
- correct that vs. which confusion
2016-04-13 16:01:30 -07:00
Eilon Lipton 0cf9a4b7f2 Merge branch 'release' into dev 2016-04-13 12:10:53 -07:00
Eilon Lipton 4f24339740 Fix package metadata 2016-04-13 12:07:04 -07:00
Ryan Nowak 84caf6968d Merge branch 'release' into dev 2016-04-11 15:50:26 -07:00
Ryan Nowak 3ec60a0181 Fix #4447 - Teach MVC to understand defaults
The wireup for defaults in attribute routes was missing
2016-04-11 14:38:29 -07:00