diff --git a/Microsoft.AspNet.Mvc.sln b/Microsoft.AspNet.Mvc.sln
index fb0ef29ec8..0f15c5a73c 100644
--- a/Microsoft.AspNet.Mvc.sln
+++ b/Microsoft.AspNet.Mvc.sln
@@ -7,8 +7,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc", "src
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample", "samples\MvcSample\MvcSample.csproj", "{069EA0A1-BB68-41D1-A973-3429EC09264C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.CoreServices", "src\Microsoft.AspNet.CoreServices\Microsoft.AspNet.CoreServices.csproj", "{EC38534C-A2D1-413F-97D1-55EEF5D2FB71}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Razor", "src\Microsoft.AspNet.Mvc.Razor\Microsoft.AspNet.Mvc.Razor.csproj", "{224A14D0-ECA7-441C-AE89-B6E66A57EF9B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
@@ -31,10 +29,6 @@ Global
{069EA0A1-BB68-41D1-A973-3429EC09264C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{069EA0A1-BB68-41D1-A973-3429EC09264C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{069EA0A1-BB68-41D1-A973-3429EC09264C}.Release|Any CPU.Build.0 = Release|Any CPU
- {EC38534C-A2D1-413F-97D1-55EEF5D2FB71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EC38534C-A2D1-413F-97D1-55EEF5D2FB71}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EC38534C-A2D1-413F-97D1-55EEF5D2FB71}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EC38534C-A2D1-413F-97D1-55EEF5D2FB71}.Release|Any CPU.Build.0 = Release|Any CPU
{224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -48,7 +42,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {EC38534C-A2D1-413F-97D1-55EEF5D2FB71} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{224A14D0-ECA7-441C-AE89-B6E66A57EF9B} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{2A0C26F1-0240-4AE1-AE00-4691C291B122} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{AB4CDC03-176C-460F-8955-4202F6D53FED} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
diff --git a/samples/MvcSample/MvcSample.csproj b/samples/MvcSample/MvcSample.csproj
index b944d2b940..badfe1e674 100644
--- a/samples/MvcSample/MvcSample.csproj
+++ b/samples/MvcSample/MvcSample.csproj
@@ -39,16 +39,21 @@
4
-
+ False
- ..\..\packages\Microsoft.Owin.2.0.2\lib\net45\Microsoft.Owin.dll
+ ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140123020341\lib\net45\Microsoft.AspNet.DependencyInjection.dll
-
- ..\..\packages\Microsoft.Owin.Diagnostics.2.0.2\lib\net40\Microsoft.Owin.Diagnostics.dll
+
+ False
+ ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
+
+
+ False
+ ..\..\packages\Microsoft.Owin.Diagnostics.2.1.0\lib\net40\Microsoft.Owin.Diagnostics.dllFalse
- ..\..\packages\Microsoft.Owin.FileSystems.2.1.0-rc1\lib\net40\Microsoft.Owin.FileSystems.dll
+ ..\..\packages\Microsoft.Owin.FileSystems.2.1.0\lib\net40\Microsoft.Owin.FileSystems.dllFalse
@@ -60,10 +65,6 @@
-
- False
- ..\packages\Microsoft.AspNet.WebApi.Client.5.0.0\lib\net45\System.Net.Http.Formatting.dll
-
@@ -76,10 +77,6 @@
-
- {ec38534c-a2d1-413f-97d1-55eef5d2fb71}
- Microsoft.AspNet.CoreServices
- {224a14d0-eca7-441c-ae89-b6e66a57ef9b}Microsoft.AspNet.Mvc.Razor
@@ -91,7 +88,6 @@
-
@@ -112,18 +108,18 @@
- False
+ TrueTrue48140/http://localhost:48140/False
- True
+ FalseFalse
-
-
+
+
diff --git a/samples/MvcSample/Startup.cs b/samples/MvcSample/Startup.cs
index 44cccdb2a3..2a768bf67f 100644
--- a/samples/MvcSample/Startup.cs
+++ b/samples/MvcSample/Startup.cs
@@ -1,6 +1,5 @@
using System;
using System.Threading.Tasks;
-using Microsoft.AspNet.CoreServices;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Razor;
using Microsoft.AspNet.Mvc.Routing;
@@ -18,9 +17,10 @@ namespace MvcSample
{
app.UseErrorPage();
- string appRoot = Environment.GetEnvironmentVariable("WEB_ROOT") ??
- AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
var serviceProvider = MvcServices.Create();
+
+ string appRoot = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+
var fileSystem = new PhysicalFileSystem(appRoot);
serviceProvider.AddInstance(new VirtualFileSystem(fileSystem));
serviceProvider.AddInstance(new RazorCompilationService(new CscBasedCompilationService()));
diff --git a/samples/MvcSample/packages.config b/samples/MvcSample/packages.config
index 49e175f1f8..23f673d0c3 100644
--- a/samples/MvcSample/packages.config
+++ b/samples/MvcSample/packages.config
@@ -1,10 +1,10 @@
-
-
-
-
+
+
+
+
-
+
\ No newline at end of file
diff --git a/samples/MvcSample/project.json b/samples/MvcSample/project.json
deleted file mode 100644
index b259c2f0ee..0000000000
--- a/samples/MvcSample/project.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "dependencies": {
- "Owin": "1.0",
- "Microsoft.Owin.Diagnostics": "2.0.2",
- "Microsoft.Owin": "2.0.2",
- "Microsoft.AspNet.Mvc": "",
- },
- "configurations": {
- "net45": {
- "dependencies": {
- "System.Net.Http" : ""
- }
- }
- }
-}
\ No newline at end of file
diff --git a/solution.json b/solution.json
new file mode 100644
index 0000000000..ee719c01ec
--- /dev/null
+++ b/solution.json
@@ -0,0 +1,4 @@
+{
+ "sources": ["src"],
+ "packages": ["packages"]
+}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj
index aa816d393b..1e982f8f48 100644
--- a/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj
+++ b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj
@@ -30,7 +30,8 @@
4
-
+
+ False..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
@@ -56,10 +57,6 @@
-
- {ec38534c-a2d1-413f-97d1-55eef5d2fb71}
- Microsoft.AspNet.CoreServices
- {2a0c26f1-0240-4ae1-ae00-4691c291b122}Microsoft.AspNet.Mvc
diff --git a/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj
index ad6f913bcc..31315176eb 100644
--- a/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj
+++ b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj
@@ -30,12 +30,17 @@
4
-
+ False
- ..\..\packages\Microsoft.Owin.2.0.2\lib\net45\Microsoft.Owin.dll
+ ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140123020341\lib\net45\Microsoft.AspNet.DependencyInjection.dll
-
- ..\..\packages\Microsoft.Owin.FileSystems.2.1.0-rc1\lib\net40\Microsoft.Owin.FileSystems.dll
+
+ False
+ ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
+
+
+ False
+ ..\..\packages\Microsoft.Owin.FileSystems.2.1.0\lib\net40\Microsoft.Owin.FileSystems.dllFalse
@@ -43,15 +48,11 @@
+ False
- ..\packages\Microsoft.AspNet.Razor.3.0.0\lib\net45\System.Web.Razor.dll
+ ..\..\packages\Microsoft.AspNet.Razor.3.1.0\lib\net45\System.Web.Razor.dll
-
-
-
-
-
@@ -81,10 +82,6 @@
{ab4cdc03-176c-460f-8955-4202f6d53fed}Microsoft.AspNet.Mvc.Html
-
- {ec38534c-a2d1-413f-97d1-55eef5d2fb71}
- Microsoft.AspNet.CoreServices
- {2a0c26f1-0240-4ae1-ae00-4691c291b122}Microsoft.AspNet.Mvc
diff --git a/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs b/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs
index f8bbee9c8f..9bbad66a40 100644
--- a/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs
+++ b/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs
@@ -4,8 +4,8 @@ using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
-using Microsoft.AspNet.CoreServices;
using Microsoft.Owin;
+using Microsoft.AspNet.DependencyInjection;
namespace Microsoft.AspNet.Mvc.Razor
{
diff --git a/src/Microsoft.AspNet.Mvc.Razor/packages.config b/src/Microsoft.AspNet.Mvc.Razor/packages.config
index 9373dc171b..bea2427672 100644
--- a/src/Microsoft.AspNet.Mvc.Razor/packages.config
+++ b/src/Microsoft.AspNet.Mvc.Razor/packages.config
@@ -1,7 +1,8 @@
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc.Razor/project.json b/src/Microsoft.AspNet.Mvc.Razor/project.json
index 4cb36608e7..970da015af 100644
--- a/src/Microsoft.AspNet.Mvc.Razor/project.json
+++ b/src/Microsoft.AspNet.Mvc.Razor/project.json
@@ -2,17 +2,12 @@
"dependencies": {
"Owin": "1.0",
"Newtonsoft.Json": "4.5.11",
- "Microsoft.Owin": "2.0.2",
- "Microsoft.Owin.FileSystems": "2.0.2",
- "Microsoft.AspNet.WebApi.Client": "5.0.0",
+ "Microsoft.Owin": "2.1.0",
+ "Microsoft.Owin.FileSystems": "2.1.0",
"Microsoft.AspNet.Mvc.Razor" : ""
},
"configurations": {
- "net45": {
- "dependencies": {
- "System.Net.Http" : ""
- }
- },
- "k10" : { }
+ "net45": { },
+ "k10" : { }
}
}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs b/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs
index 485b1ab995..c4407eeed3 100644
--- a/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs
+++ b/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs
@@ -1,10 +1,4 @@
-using Microsoft.AspNet.CoreServices;
-using System;
-using System.Collections.Generic;
-using System.Net;
-using System.Net.Http;
-using System.Net.Http.Formatting;
-using System.Linq;
+using System;
namespace Microsoft.AspNet.Mvc
{
@@ -12,61 +6,11 @@ namespace Microsoft.AspNet.Mvc
{
public IActionResult CreateActionResult(Type declaredReturnType, object actionReturnValue, RequestContext requestContext)
{
- // optimize common path
- IActionResult actionResult = actionReturnValue as IActionResult;
-
- if (actionResult != null)
+ return new ContentResult
{
- return actionResult;
- }
-
- bool isDeclaredTypeActionResult = typeof(IActionResult).IsAssignableFrom(declaredReturnType);
- bool isDeclaredTypeResponseMessage = typeof(HttpResponseMessage).IsAssignableFrom(declaredReturnType);
-
- if ((isDeclaredTypeActionResult || isDeclaredTypeResponseMessage) && actionReturnValue == null)
- {
- throw new InvalidOperationException("Cannot return null from an action method declaring IActionResult or HttpResponseMessage");
- }
-
- if (declaredReturnType == null)
- {
- throw new InvalidOperationException("Declared type must be passed");
- }
-
- if (declaredReturnType.IsGenericParameter)
- {
- // This can happen if somebody declares an action method as:
- // public T Get() { }
- throw new InvalidOperationException("HttpActionDescriptor_NoConverterForGenericParamterTypeExists");
- }
-
- if (declaredReturnType.IsAssignableFrom(typeof(void)))
- {
- return new NoContentResult();
- }
-
- var responseMessage = actionReturnValue as HttpResponseMessage;
- if (responseMessage != null)
- {
- return new HttpResponseMessageActionResult(responseMessage);
- }
-
- if (actionReturnValue is string)
- {
- return new ContentResult
- {
- ContentType = "text/plain",
- Content = (string)actionReturnValue,
- };
- }
-
- // TODO: this needs to get injected
- IOwinContentNegotiator contentNegotiator = new DefaultContentNegotiator();
-
- // TODO: inject the formatters
- IEnumerable formatters = requestContext.Formatters;
-
- return new NegotiatedContentResult(HttpStatusCode.OK, declaredReturnType, actionReturnValue, contentNegotiator, requestContext.HttpContext, formatters);
+ ContentType = "text/plain",
+ Content = Convert.ToString(actionReturnValue),
+ };
}
}
}
diff --git a/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs b/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs
index 76d05ad996..f13b7b17cb 100644
--- a/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs
+++ b/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs
@@ -1,5 +1,4 @@
using System;
-using Microsoft.AspNet.CoreServices;
namespace Microsoft.AspNet.Mvc
{
diff --git a/src/Microsoft.AspNet.Mvc/ActionResults/NegotiatedContentResult.cs b/src/Microsoft.AspNet.Mvc/ActionResults/NegotiatedContentResult.cs
deleted file mode 100644
index 3407b0e272..0000000000
--- a/src/Microsoft.AspNet.Mvc/ActionResults/NegotiatedContentResult.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.Contracts;
-using Microsoft.Owin;
-using System.Net;
-using System.Net.Http;
-using System.Net.Http.Formatting;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Web.Http.Properties;
-using System.Linq;
-
-namespace Microsoft.AspNet.Mvc
-{
- /// Represents an action result that performs content negotiation.
- /// The type of content in the entity body.
- internal class NegotiatedContentResult : IActionResult
- {
- ///
- /// Initializes a new instance of the class with the values provided.
- ///
- /// The HTTP status code for the response message.
- /// The content value to negotiate and format in the entity body.
- /// The content negotiator to handle content negotiation.
- /// The request message which led to this result.
- /// The formatters to use to negotiate and format the content.
- public NegotiatedContentResult(HttpStatusCode statusCode,
- Type declaredType,
- object content,
- IOwinContentNegotiator contentNegotiator,
- IOwinContext owinContext,
- IEnumerable formatters)
- {
- Contract.Assert(content != null);
- Contract.Assert(declaredType != null);
- Contract.Assert(owinContext != null);
- Contract.Assert(formatters != null);
-
- StatusCode = statusCode;
- DeclaredType = declaredType;
- Content = content;
- CurrentOwinContext = owinContext;
- Formatters = formatters;
- ContentNegotiator = contentNegotiator;
- }
-
- /// Gets the HTTP status code for the response message.
- public HttpStatusCode StatusCode { get; private set; }
-
- public Type DeclaredType { get; private set; }
-
- /// Gets the content value to negotiate and format in the entity body.
- public object Content { get; private set; }
-
- /// Gets the content negotiator to handle content negotiation.
- public IOwinContentNegotiator ContentNegotiator { get; private set; }
-
- /// Gets the request message which led to this result.
- public IOwinContext CurrentOwinContext { get; private set; }
-
- /// Gets the formatters to use to negotiate and format the content.
- public IEnumerable Formatters { get; private set; }
-
- ///
- public virtual Task ExecuteResultAsync(RequestContext context)
- {
- // Run content negotiation.
- ContentNegotiationResult result = ContentNegotiator.Negotiate(DeclaredType, CurrentOwinContext, Formatters);
-
- if (result == null)
- {
- // A null result from content negotiation indicates that the response should be a 406.
- CurrentOwinContext.Response.StatusCode = (int)HttpStatusCode.NotAcceptable;
-
- return Task.FromResult(false);
- }
- else
- {
- IOwinResponse response = CurrentOwinContext.Response;
- response.StatusCode = (int)StatusCode;
- Contract.Assert(result.Formatter != null);
-
- var objectContent = new ObjectContent(DeclaredType, Content, result.Formatter, result.MediaType);
-
- // Copy non-content headers
- IDictionary responseHeaders = response.Headers;
- foreach (KeyValuePair header in response.Headers)
- {
- responseHeaders[header.Key] = header.Value.AsArray();
- }
-
- // Copy content headers
- foreach (KeyValuePair> contentHeader in objectContent.Headers)
- {
- responseHeaders[contentHeader.Key] = contentHeader.Value.AsArray();
- }
-
- return objectContent.CopyToAsync(response.Body);
- }
- }
- }
-}
diff --git a/src/Microsoft.AspNet.Mvc/ActionResults/ObjectContent.cs b/src/Microsoft.AspNet.Mvc/ActionResults/ObjectContent.cs
deleted file mode 100644
index 931b7b7c3f..0000000000
--- a/src/Microsoft.AspNet.Mvc/ActionResults/ObjectContent.cs
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-
-using System;
-using System.Diagnostics.Contracts;
-using System.IO;
-using System.Net.Http;
-using System.Net.Http.Formatting;
-using System.Net.Http.Headers;
-using System.Threading.Tasks;
-using System.Web.Http;
-
-namespace Microsoft.AspNet.Mvc
-{
- ///
- /// Contains a value as well as an associated that will be
- /// used to serialize the value when writing this content.
- ///
- public class ObjectContent : HttpContent
- {
- private object _value;
- private readonly MediaTypeFormatter _formatter;
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The type of object this instance will contain.
- /// The value of the object this instance will contain.
- /// The formatter to use when serializing the value.
- public ObjectContent(Type type, object value, MediaTypeFormatter formatter)
- : this(type, value, formatter, (MediaTypeHeaderValue)null)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The type of object this instance will contain.
- /// The value of the object this instance will contain.
- /// The formatter to use when serializing the value.
- /// The authoritative value of the content's Content-Type header. Can be null in which case the
- /// formatter's default content type will be used.
- public ObjectContent(Type type, object value, MediaTypeFormatter formatter, string mediaType)
- : this(type, value, formatter, BuildHeaderValue(mediaType))
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The type of object this instance will contain.
- /// The value of the object this instance will contain.
- /// The formatter to use when serializing the value.
- /// The authoritative value of the content's Content-Type header. Can be null in which case the
- /// formatter's default content type will be used.
- public ObjectContent(Type type, object value, MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType)
- {
- if (type == null)
- {
- throw new ArgumentNullException("type");
- }
- if (formatter == null)
- {
- throw new ArgumentNullException("formatter");
- }
-
- if (!formatter.CanWriteType(type))
- {
- throw new ArgumentNullException(formatter.GetType().FullName + " cannot write " + type.Name);
- }
-
- _formatter = formatter;
- ObjectType = type;
-
- VerifyAndSetObject(value);
- _formatter.SetDefaultContentHeaders(type, Headers, mediaType);
- }
-
- ///
- /// Gets the type of object managed by this instance.
- ///
- public Type ObjectType { get; private set; }
-
- ///
- /// The formatter associated with this content instance.
- ///
- public MediaTypeFormatter Formatter
- {
- get { return _formatter; }
- }
-
- ///
- /// Gets or sets the value of the current .
- ///
- public object Value
- {
- get { return _value; }
- set { _value = value; }
- }
-
- internal static MediaTypeHeaderValue BuildHeaderValue(string mediaType)
- {
- return mediaType != null ? new MediaTypeHeaderValue(mediaType) : null;
- }
-
- ///
- /// Asynchronously serializes the object's content to the given .
- ///
- /// The to which to write.
- /// The associated .
- /// A instance that is asynchronously serializing the object's content.
- protected override Task SerializeToStreamAsync(Stream stream, System.Net.TransportContext context)
- {
- return _formatter.WriteToStreamAsync(ObjectType, Value, stream, this, context);
- }
-
- ///
- /// Computes the length of the stream if possible.
- ///
- /// The computed length of the stream.
- /// true if the length has been computed; otherwise false.
- protected override bool TryComputeLength(out long length)
- {
- length = -1;
- return false;
- }
-
- private static bool IsTypeNullable(Type type)
- {
- return !type.IsValueType() ||
- (type.IsGenericType() &&
- type.GetGenericTypeDefinition() == typeof(Nullable<>));
- }
-
- private void VerifyAndSetObject(object value)
- {
- Contract.Assert(ObjectType != null, "Type cannot be null");
-
- if (value == null)
- {
- // Null may not be assigned to value types (unless Nullable)
- if (!IsTypeNullable(ObjectType))
- {
- throw new InvalidOperationException("CannotUseNullValueType " + typeof(ObjectContent).Name + " " + ObjectType.Name);
- }
- }
- else
- {
- // Non-null objects must be a type assignable to Type
- Type objectType = value.GetType();
- if (!ObjectType.IsAssignableFrom(objectType))
- {
- throw new ArgumentException("value Resources.ObjectAndTypeDisagree, objectType.Name, ObjectType.Name");
- }
- }
-
- _value = value;
- }
- }
-}
diff --git a/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs b/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs
index 15346c509e..4ac79000ca 100644
--- a/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs
+++ b/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
-using Microsoft.AspNet.CoreServices;
+using Microsoft.AspNet.DependencyInjection;
using Microsoft.Owin;
namespace Microsoft.AspNet.Mvc
diff --git a/src/Microsoft.AspNet.Mvc/DefaultContentNegotiator.cs b/src/Microsoft.AspNet.Mvc/DefaultContentNegotiator.cs
deleted file mode 100644
index ae70031539..0000000000
--- a/src/Microsoft.AspNet.Mvc/DefaultContentNegotiator.cs
+++ /dev/null
@@ -1,599 +0,0 @@
-//// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-
-using Microsoft.Owin;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Diagnostics.Contracts;
-using System.Linq;
-using System.Net.Http;
-using System.Net.Http.Formatting;
-using System.Net.Http.Headers;
-using System.Text;
-using System.Web.Http;
-
-namespace Microsoft.AspNet.Mvc
-{
- ///
- /// Class that selects a for an
- /// or .
- ///
- public class DefaultContentNegotiator : IOwinContentNegotiator
- {
-// public DefaultContentNegotiator()
-// : this(false)
-// {
-// }
-
-// ///
-// /// Initializes a new instance of the with
-// /// the given setting for .
-// ///
-// ///
-// /// If ExcludeMatchOnTypeOnly is true then we don't match on type only which means
-// /// that we return null if we can't match on anything in the request. This is useful
-// /// for generating 406 (Not Acceptable) status codes.
-// ///
-// public DefaultContentNegotiator(bool excludeMatchOnTypeOnly)
-// {
-// ExcludeMatchOnTypeOnly = excludeMatchOnTypeOnly;
-// }
-
-// ///
-// /// If ExcludeMatchOnTypeOnly is true then we don't match on type only which means
-// /// that we return null if we can't match on anything in the request. This is useful
-// /// for generating 406 (Not Acceptable) status codes.
-// ///
-// public bool ExcludeMatchOnTypeOnly { get; private set; }
-
-// ///
-// /// Performs content negotiating by selecting the most appropriate out of the passed in
-// /// for the given that can serialize an object of the given
-// /// .
-// ///
-// /// The type to be serialized.
-// /// The request.
-// /// The set of objects from which to choose.
-// /// The result of the negotiation containing the most appropriate instance,
-// /// or null if there is no appropriate formatter.
-// public virtual ContentNegotiationResult Negotiate(Type type, IOwinContext context, IEnumerable formatters)
-// {
-// // Performance-sensitive
-// if (type == null)
-// {
-// throw new ArgumentNullException("type");
-// }
-// if (context == null)
-// {
-// throw new ArgumentNullException("context");
-// }
-// if (formatters == null)
-// {
-// throw new ArgumentNullException("formatters");
-// }
-
-// var request = context.Request;
-
-// // Go through each formatter to compute how well it matches.
-// Collection matches = ComputeFormatterMatches(type, request, formatters);
-
-// // Select best formatter match among the matches
-// MediaTypeFormatterMatch bestFormatterMatch = SelectResponseMediaTypeFormatter(matches);
-
-// // We found a best formatter
-// if (bestFormatterMatch != null)
-// {
-// // Find the best character encoding for the selected formatter
-// Encoding bestEncodingMatch = SelectResponseCharacterEncoding(request, bestFormatterMatch.Formatter);
-// if (bestEncodingMatch != null)
-// {
-// bestFormatterMatch.MediaType.CharSet = bestEncodingMatch.WebName;
-// }
-
-// MediaTypeHeaderValue bestMediaType = bestFormatterMatch.MediaType;
-// MediaTypeFormatter bestFormatter = bestFormatterMatch.Formatter; // this is OData only scenario at the moment: .GetPerRequestFormatterInstance(type, request, bestMediaType);
-// return new ContentNegotiationResult(bestFormatter, bestMediaType);
-// }
-
-// return null;
-// }
-
-// ///
-// /// Determine how well each formatter matches by associating a value
-// /// with the formatter. Then associate the quality of the match based on q-factors and other parameters. The result of this
-// /// method is a collection of the matches found categorized and assigned a quality value.
-// ///
-// /// The type to be serialized.
-// /// The request.
-// /// The set of objects from which to choose.
-// /// A collection containing all the matches.
-// protected virtual Collection ComputeFormatterMatches(Type type, IOwinRequest request, IEnumerable formatters)
-// {
-// // Performance-sensitive
-// if (type == null)
-// {
-// throw new ArgumentNullException("type");
-// }
-// if (request == null)
-// {
-// throw new ArgumentNullException("request");
-// }
-// if (formatters == null)
-// {
-// throw new ArgumentNullException("formatters");
-// }
-
-// IEnumerable sortedAcceptValues = null;
-
-// // Go through each formatter to find how well it matches.
-// List matches = new List();
-// MediaTypeFormatter[] writingFormatters = GetWritingFormatters(formatters);
-// for (int i = 0; i < writingFormatters.Length; i++)
-// {
-// MediaTypeFormatter formatter = writingFormatters[i];
-// MediaTypeFormatterMatch match = null;
-
-// // Check first that formatter can write the actual type
-// if (!formatter.CanWriteType(type))
-// {
-// // Formatter can't even write the type so no match at all
-// continue;
-// }
-
-// // Match against media type mapping.
-// if ((match = MatchMediaTypeMapping(request, formatter)) != null)
-// {
-// matches.Add(match);
-// continue;
-// }
-
-// // Match against the accept header values.
-// if (sortedAcceptValues == null)
-// {
-// // Sort the Accept header values in descending order based on q-factor
-// sortedAcceptValues = SortMediaTypeWithQualityHeaderValuesByQFactor(request.Headers.Accept);
-// }
-// if ((match = MatchAcceptHeader(sortedAcceptValues, formatter)) != null)
-// {
-// matches.Add(match);
-// continue;
-// }
-
-// // Match against request's media type if any
-// if ((match = MatchRequestMediaType(request, formatter)) != null)
-// {
-// matches.Add(match);
-// continue;
-// }
-
-// // Check whether we should match on type or stop the matching process.
-// // The latter is used to generate 406 (Not Acceptable) status codes.
-// bool shouldMatchOnType = ShouldMatchOnType(sortedAcceptValues);
-
-// // Match against the type of object we are writing out
-// if (shouldMatchOnType && (match = MatchType(type, formatter)) != null)
-// {
-// matches.Add(match);
-// continue;
-// }
-// }
-
-// return matches;
-// }
-
-// ///
-// /// Select the best match among the candidate matches found.
-// ///
-// /// The collection of matches.
-// /// The determined to be the best match.
-// protected virtual MediaTypeFormatterMatch SelectResponseMediaTypeFormatter(ICollection matches)
-// {
-// // Performance-sensitive
-// if (matches == null)
-// {
-// throw new ArgumentNullException("matches");
-// }
-
-// List matchList = matches.AsList();
-
-// MediaTypeFormatterMatch bestMatchOnType = null;
-// MediaTypeFormatterMatch bestMatchOnAcceptHeaderLiteral = null;
-// MediaTypeFormatterMatch bestMatchOnAcceptHeaderSubtypeMediaRange = null;
-// MediaTypeFormatterMatch bestMatchOnAcceptHeaderAllMediaRange = null;
-// MediaTypeFormatterMatch bestMatchOnMediaTypeMapping = null;
-// MediaTypeFormatterMatch bestMatchOnRequestMediaType = null;
-
-// // Go through each formatter to find the best match in each category.
-// for (int i = 0; i < matchList.Count; i++)
-// {
-// MediaTypeFormatterMatch match = matchList[i];
-// switch (match.Ranking)
-// {
-// case MediaTypeFormatterMatchRanking.MatchOnCanWriteType:
-// // First match by type trumps all other type matches
-// if (bestMatchOnType == null)
-// {
-// bestMatchOnType = match;
-// }
-// break;
-
-// case MediaTypeFormatterMatchRanking.MatchOnRequestWithMediaTypeMapping:
-// // Matches on accept headers using mappings must choose the highest quality match
-// bestMatchOnMediaTypeMapping = UpdateBestMatch(bestMatchOnMediaTypeMapping, match);
-// break;
-
-// case MediaTypeFormatterMatchRanking.MatchOnRequestAcceptHeaderLiteral:
-// // Matches on accept headers must choose the highest quality match.
-// // A match of 0.0 means we won't use it at all.
-// bestMatchOnAcceptHeaderLiteral = UpdateBestMatch(bestMatchOnAcceptHeaderLiteral, match);
-// break;
-
-// case MediaTypeFormatterMatchRanking.MatchOnRequestAcceptHeaderSubtypeMediaRange:
-// // Matches on accept headers must choose the highest quality match.
-// // A match of 0.0 means we won't use it at all.
-// bestMatchOnAcceptHeaderSubtypeMediaRange = UpdateBestMatch(bestMatchOnAcceptHeaderSubtypeMediaRange, match);
-// break;
-
-// case MediaTypeFormatterMatchRanking.MatchOnRequestAcceptHeaderAllMediaRange:
-// // Matches on accept headers must choose the highest quality match.
-// // A match of 0.0 means we won't use it at all.
-// bestMatchOnAcceptHeaderAllMediaRange = UpdateBestMatch(bestMatchOnAcceptHeaderAllMediaRange, match);
-// break;
-
-// case MediaTypeFormatterMatchRanking.MatchOnRequestMediaType:
-// // First match on request content type trumps other request content matches
-// if (bestMatchOnRequestMediaType == null)
-// {
-// bestMatchOnRequestMediaType = match;
-// }
-// break;
-// }
-// }
-
-// // If we received matches based on both supported media types and from media type mappings,
-// // we want to give precedence to the media type mappings, but only if their quality is >= that of the supported media type.
-// // We do this because media type mappings are the user's extensibility point and must take precedence over normal
-// // supported media types in the case of a tie. The 99% case is where both have quality 1.0.
-// if (bestMatchOnMediaTypeMapping != null)
-// {
-// MediaTypeFormatterMatch mappingOverride = bestMatchOnMediaTypeMapping;
-// mappingOverride = UpdateBestMatch(mappingOverride, bestMatchOnAcceptHeaderLiteral);
-// mappingOverride = UpdateBestMatch(mappingOverride, bestMatchOnAcceptHeaderSubtypeMediaRange);
-// mappingOverride = UpdateBestMatch(mappingOverride, bestMatchOnAcceptHeaderAllMediaRange);
-// if (mappingOverride != bestMatchOnMediaTypeMapping)
-// {
-// bestMatchOnMediaTypeMapping = null;
-// }
-// }
-
-// // now select the formatter and media type
-// // A MediaTypeMapping is highest precedence -- it is an extensibility point
-// // allowing the user to override normal accept header matching
-// MediaTypeFormatterMatch bestMatch = null;
-// if (bestMatchOnMediaTypeMapping != null)
-// {
-// bestMatch = bestMatchOnMediaTypeMapping;
-// }
-// else if (bestMatchOnAcceptHeaderLiteral != null ||
-// bestMatchOnAcceptHeaderSubtypeMediaRange != null ||
-// bestMatchOnAcceptHeaderAllMediaRange != null)
-// {
-// bestMatch = UpdateBestMatch(bestMatch, bestMatchOnAcceptHeaderLiteral);
-// bestMatch = UpdateBestMatch(bestMatch, bestMatchOnAcceptHeaderSubtypeMediaRange);
-// bestMatch = UpdateBestMatch(bestMatch, bestMatchOnAcceptHeaderAllMediaRange);
-// }
-// else if (bestMatchOnRequestMediaType != null)
-// {
-// bestMatch = bestMatchOnRequestMediaType;
-// }
-// else if (bestMatchOnType != null)
-// {
-// bestMatch = bestMatchOnType;
-// }
-
-// return bestMatch;
-// }
-
-// ///
-// /// Determine the best character encoding for writing the response. First we look
-// /// for accept-charset headers and if not found then we try to match
-// /// any charset encoding in the request (in case of PUT, POST, etc.)
-// /// If no encoding is found then we use the default for the formatter.
-// ///
-// /// The determined to be the best match.
-// protected virtual Encoding SelectResponseCharacterEncoding(IOwinRequest request, MediaTypeFormatter formatter)
-// {
-// if (request == null)
-// {
-// throw new ArgumentNullException("request");
-// }
-// if (formatter == null)
-// {
-// throw new ArgumentNullException("formatter");
-// }
-
-// // If there are any SupportedEncodings then we pick an encoding
-// List supportedEncodings = formatter.SupportedEncodingsInternal;
-// if (supportedEncodings.Count > 0)
-// {
-// // Sort Accept-Charset header values
-// IEnumerable sortedAcceptCharsetValues = SortStringWithQualityHeaderValuesByQFactor(request.Headers.AcceptCharset);
-
-// // Check for match based on accept-charset headers
-// foreach (StringWithQualityHeaderValue acceptCharset in sortedAcceptCharsetValues)
-// {
-// for (int i = 0; i < supportedEncodings.Count; i++)
-// {
-// Encoding encoding = supportedEncodings[i];
-// if (encoding != null && acceptCharset.Quality != FormattingUtilities.NoMatch &&
-// (acceptCharset.Value.Equals(encoding.WebName, StringComparison.OrdinalIgnoreCase) ||
-// acceptCharset.Value.Equals("*", StringComparison.OrdinalIgnoreCase)))
-// {
-// return encoding;
-// }
-// }
-// }
-
-// // Check for match based on any request entity body
-
-// // TODO: Transform to use request content headers directly
-// // was - request.Content != null ? request.Content.Headers : null
-// return formatter.SelectCharacterEncoding(null);
-// }
-
-// return null;
-// }
-
-// ///
-// /// Match a request against the s registered with the formatter.
-// ///
-// /// The request to match.
-// /// The formatter to match against.
-// /// A indicating the quality of the match or null is no match.
-// protected virtual MediaTypeFormatterMatch MatchMediaTypeMapping(IOwinRequest request, MediaTypeFormatter formatter)
-// {
-// if (request == null)
-// {
-// throw new ArgumentNullException("request");
-// }
-// if (formatter == null)
-// {
-// throw new ArgumentNullException("formatter");
-// }
-
-// List mediaTypeMappings = formatter.MediaTypeMappingsInternal;
-// for (int i = 0; i < mediaTypeMappings.Count; i++)
-// {
-// MediaTypeMapping mapping = mediaTypeMappings[i];
-// double quality;
-// if (mapping != null && ((quality = mapping.TryMatchMediaType(request)) > FormattingUtilities.NoMatch))
-// {
-// return new MediaTypeFormatterMatch(formatter, mapping.MediaType, quality, MediaTypeFormatterMatchRanking.MatchOnRequestWithMediaTypeMapping);
-// }
-// }
-
-// return null;
-// }
-
-// ///
-// /// Match the request accept header field values against the formatter's registered supported media types.
-// ///
-// /// The sorted accept header values to match.
-// /// The formatter to match against.
-// /// A indicating the quality of the match or null is no match.
-// protected virtual MediaTypeFormatterMatch MatchAcceptHeader(IEnumerable sortedAcceptValues, MediaTypeFormatter formatter)
-// {
-// if (sortedAcceptValues == null)
-// {
-// throw Error.ArgumentNull("sortedAcceptValues");
-// }
-// if (formatter == null)
-// {
-// throw Error.ArgumentNull("formatter");
-// }
-
-// foreach (MediaTypeWithQualityHeaderValue acceptMediaTypeValue in sortedAcceptValues)
-// {
-// List supportedMediaTypes = formatter.SupportedMediaTypesInternal;
-// for (int i = 0; i < supportedMediaTypes.Count; i++)
-// {
-// MediaTypeHeaderValue supportedMediaType = supportedMediaTypes[i];
-// MediaTypeHeaderValueRange range;
-// if (supportedMediaType != null && acceptMediaTypeValue.Quality != FormattingUtilities.NoMatch &&
-// supportedMediaType.IsSubsetOf(acceptMediaTypeValue, out range))
-// {
-// MediaTypeFormatterMatchRanking ranking;
-// switch (range)
-// {
-// case MediaTypeHeaderValueRange.AllMediaRange:
-// ranking = MediaTypeFormatterMatchRanking.MatchOnRequestAcceptHeaderAllMediaRange;
-// break;
-
-// case MediaTypeHeaderValueRange.SubtypeMediaRange:
-// ranking = MediaTypeFormatterMatchRanking.MatchOnRequestAcceptHeaderSubtypeMediaRange;
-// break;
-
-// default:
-// ranking = MediaTypeFormatterMatchRanking.MatchOnRequestAcceptHeaderLiteral;
-// break;
-// }
-
-// return new MediaTypeFormatterMatch(formatter, supportedMediaType, acceptMediaTypeValue.Quality, ranking);
-// }
-// }
-// }
-
-// return null;
-// }
-
-// ///
-// /// Match any request media type (in case there is a request entity body) against the formatter's registered
-// /// media types.
-// ///
-// /// The request to match.
-// /// The formatter to match against.
-// /// A indicating the quality of the match or null is no match.
-// protected virtual MediaTypeFormatterMatch MatchRequestMediaType(IOwinRequest request, MediaTypeFormatter formatter)
-// {
-// if (request == null)
-// {
-// throw new ArgumentNullException("request");
-// }
-// if (formatter == null)
-// {
-// throw new ArgumentNullException("formatter");
-// }
-
-// if (request.Content != null)
-// {
-// MediaTypeHeaderValue requestMediaType = request.Content.Headers.ContentType;
-// if (requestMediaType != null)
-// {
-// List supportedMediaTypes = formatter.SupportedMediaTypesInternal;
-// for (int i = 0; i < supportedMediaTypes.Count; i++)
-// {
-// MediaTypeHeaderValue supportedMediaType = supportedMediaTypes[i];
-// if (supportedMediaType != null && supportedMediaType.IsSubsetOf(requestMediaType))
-// {
-// return new MediaTypeFormatterMatch(formatter, supportedMediaType, FormattingUtilities.Match, MediaTypeFormatterMatchRanking.MatchOnRequestMediaType);
-// }
-// }
-// }
-// }
-
-// return null;
-// }
-
-// ///
-// /// Determine whether to match on type or not. This is used to determine whether to
-// /// generate a 406 response or use the default media type formatter in case there
-// /// is no match against anything in the request. If ExcludeMatchOnTypeOnly is true
-// /// then we don't match on type unless there are no accept headers.
-// ///
-// /// The sorted accept header values to match.
-// /// True if not ExcludeMatchOnTypeOnly and accept headers with a q-factor bigger than 0.0 are present.
-// protected virtual bool ShouldMatchOnType(IEnumerable sortedAcceptValues)
-// {
-// if (sortedAcceptValues == null)
-// {
-// throw new ArgumentNullException("sortedAcceptValues");
-// }
-
-// return !(ExcludeMatchOnTypeOnly && sortedAcceptValues.Any());
-// }
-
-// ///
-// /// Pick the first supported media type and indicate we've matched only on type
-// ///
-// /// The type to be serialized.
-// /// The formatter we are matching against.
-// /// A indicating the quality of the match or null is no match.
-// protected virtual MediaTypeFormatterMatch MatchType(Type type, MediaTypeFormatter formatter)
-// {
-// // Performance-sensitive
-// if (type == null)
-// {
-// throw new ArgumentNullException("type");
-// }
-// if (formatter == null)
-// {
-// throw new ArgumentNullException("formatter");
-// }
-
-// // We already know that we do match on type -- otherwise we wouldn't even be called --
-// // so this is just a matter of determining how we match.
-// MediaTypeHeaderValue mediaType = null;
-// List supportedMediaTypes = formatter.SupportedMediaTypesInternal;
-// if (supportedMediaTypes.Count > 0)
-// {
-// mediaType = supportedMediaTypes[0];
-// }
-// return new MediaTypeFormatterMatch(formatter, mediaType, FormattingUtilities.Match, MediaTypeFormatterMatchRanking.MatchOnCanWriteType);
-// }
-
-// ///
-// /// Sort Accept header values and related header field values with similar syntax rules
-// /// (if more than 1) in descending order based on q-factor.
-// ///
-// /// The header values to sort.
-// /// The sorted header values.
-// protected virtual IEnumerable SortMediaTypeWithQualityHeaderValuesByQFactor(ICollection headerValues)
-// {
-// if (headerValues == null)
-// {
-// throw new ArgumentNullException("headerValues");
-// }
-
-// if (headerValues.Count > 1)
-// {
-// // Use OrderBy() instead of Array.Sort() as it performs fewer comparisons. In this case the comparisons
-// // are quite expensive so OrderBy() performs better.
-// return headerValues.OrderByDescending(m => m, MediaTypeWithQualityHeaderValueComparer.QualityComparer).ToArray();
-// }
-// else
-// {
-// return headerValues;
-// }
-// }
-
-// ///
-// /// Sort Accept-Charset, Accept-Encoding, Accept-Language and related header field values with similar syntax rules
-// /// (if more than 1) in descending order based on q-factor.
-// ///
-// /// The header values to sort.
-// /// The sorted header values.
-// protected virtual IEnumerable SortStringWithQualityHeaderValuesByQFactor(ICollection headerValues)
-// {
-// if (headerValues == null)
-// {
-// throw new ArgumentNullException("headerValues");
-// }
-
-// if (headerValues.Count > 1)
-// {
-// // Use OrderBy() instead of Array.Sort() as it performs fewer comparisons. In this case the comparisons
-// // are quite expensive so OrderBy() performs better.
-// return headerValues.OrderByDescending(m => m, StringWithQualityHeaderValueComparer.QualityComparer).ToArray();
-// }
-// else
-// {
-// return headerValues;
-// }
-// }
-
-// ///
-// /// Evaluates whether a match is better than the current match and if so returns the replacement; otherwise returns the
-// /// current match.
-// ///
-// protected virtual MediaTypeFormatterMatch UpdateBestMatch(MediaTypeFormatterMatch current, MediaTypeFormatterMatch potentialReplacement)
-// {
-// if (potentialReplacement == null)
-// {
-// return current;
-// }
-
-// if (current != null)
-// {
-// return (potentialReplacement.Quality > current.Quality) ? potentialReplacement : current;
-// }
-
-// return potentialReplacement;
-// }
-
-// private static MediaTypeFormatter[] GetWritingFormatters(IEnumerable formatters)
-// {
-// Contract.Assert(formatters != null);
-// MediaTypeFormatterCollection formatterCollection = formatters as MediaTypeFormatterCollection;
-// if (formatterCollection != null)
-// {
-// return formatterCollection.WritingFormatters;
-// }
-// return formatters.AsArray();
-// }
-
- public ContentNegotiationResult Negotiate(Type type, IOwinContext context, IEnumerable formatters)
- {
- return new ContentNegotiationResult(formatters.First(), formatters.First().SupportedMediaTypes.First());
- }
- }
-}
diff --git a/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs b/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs
index 940e7026f0..4258cff5e3 100644
--- a/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs
+++ b/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs
@@ -1,6 +1,6 @@
using System;
using System.Linq;
-using Microsoft.AspNet.CoreServices;
+using Microsoft.AspNet.DependencyInjection;
using Microsoft.Owin;
namespace Microsoft.AspNet.Mvc
@@ -23,7 +23,7 @@ namespace Microsoft.AspNet.Mvc
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
- var type = a.GetType(controllerName) ??
+ var type = a.GetType(controllerName) ??
a.GetType(a.GetName().Name + "." + controllerName) ??
a.GetTypes().FirstOrDefault(t => t.Name.Equals(controllerName, StringComparison.OrdinalIgnoreCase));
diff --git a/src/Microsoft.AspNet.Mvc/Formatters/JQeryMvcForUrlEncodedFormatter.cs b/src/Microsoft.AspNet.Mvc/Formatters/JQeryMvcForUrlEncodedFormatter.cs
deleted file mode 100644
index 96db73e393..0000000000
--- a/src/Microsoft.AspNet.Mvc/Formatters/JQeryMvcForUrlEncodedFormatter.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-
-using System;
-using System.IO;
-using System.Net.Http;
-using System.Net.Http.Formatting;
-using System.Threading.Tasks;
-
-namespace Microsoft.AspNet.Mvc
-{
- // Supports JQuery schema on FormURL.
- public class JQueryMvcFormUrlEncodedFormatter : FormUrlEncodedMediaTypeFormatter
- {
- public override bool CanReadType(Type type)
- {
- if (type == null)
- {
- throw new ArgumentNullException("type");
- }
-
- return true;
- }
-
- public override Task