在 Visual Studio 2010 中,我使用 ASP.NET MVC 4 创建 Web api 项目,如本示例所示:https://www.youtube.com/watch?v=H9vBxAH4f5E https://www.youtube.com/watch?v=H9vBxAH4f5E
一切正常 - 我成功使用GET
方法,但是使用时POST
方法,我遇到一个问题:
没有 MediaTypeFormatter 可用于读取“String”类型的对象
来自媒体类型为“application/x-www-form-urlencoded”的内容。
My webapiconfig.cs
看起来像这样:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
FormUrlEncodedMediaTypeFormatter f;
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
f = new FormUrlEncodedMediaTypeFormatter();
f.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.Add(f);
// application/x-www-form-urlencoded ???
}
}
为什么我会遇到问题:
没有 MediaTypeFormatter 可用于读取“String”类型的对象
来自媒体类型为“application/x-www-form-urlencoded”的内容。
完整的错误消息:
消息:“发生错误。”异常消息:“否
MediaTypeFormatter 可用于读取“String”类型的对象
来自媒体类型为“application/x-www-form-urlencoded”的内容。”
异常类型:“System.InvalidOperationException”StackTrace:“位于
System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent
内容、类型类型、IEnumerable1 formatters, IFormatterLogger
formatterLogger) at
System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage
request, Type type, IEnumerable
1 个格式化程序、IFormatterLogger
格式化程序记录器)位于
System.Web.Http.ModelBinding.FormatterParameterBinding.ExecuteBindingAsync(ModelMetadataProvider
元数据提供程序、HttpActionContext actionContext、CancellationToken
取消令牌)位于
System.Web.Http.Controllers.HttpActionBinding.c__DisplayClass1.b__0(HttpParameterBinding
参数绑定器)位于
System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() at
System.Threading.Tasks.TaskHelpers.IterateImpl(IEnumerator
1
枚举器,CancellationToken(取消令牌)”
请求头:
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip,deflate
Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4
响应头:
缓存控制:无缓存 Pragma:无缓存内容类型:
应用程序/json; charset=utf-8 过期:-1 服务器:
Microsoft-IIS/8.0 X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET
日期:2014 年 9 月 8 日星期一 18:06:10 GMT 内容长度:1111
我该如何解决这个问题?
谢谢 :)