请求实体的媒体类型' application / x-www-form-urlencoded'此资源不支持

时间:2016-10-03 06:05:13

标签: angularjs asp.net-mvc asp.net-web-api data-formatters aspnetboilerplate

我使用ASPNET Boilerplate框架来开发我的应用程序,但我确定这是一个WebAPI特定问题。我正在使用基于以下应用层功能构建的动态WebAPI功能。

Application Service function

在我的Angular App上,我使用以下代码将数据发布到动态API,最后是应用层功能。



var formDataObject = new FormData();
                formDataObject.append('avatar', vm.group.avatar);
                formDataObject.append('name', vm.group.name);
                formDataObject.append('description', vm.group.description);
                
                $.ajax({
                    url: abp.appPath + 'api/services/app/group/CreateGroup',
                    processData: false,
                    //contentType: false,
                    type: 'POST',
                    data: formDataObject
                });




我在Chrome控制台中收到以下错误:

{"message":"The request entity's media type 'application/x-www-form-urlencoded' is not supported for this resource.","exceptionMessage":"No MediaTypeFormatter is available to read an object of type 'InputGroup' from content with media type 'application/x-www-form-urlencoded'.","exceptionType":"System.Net.Http.UnsupportedMediaTypeException","stackTrace":"   at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"}

我尝试过以下解决方案但没有成功:

  • 使用FormDataCollection作为参数类型。
  • 发布没有文件(头像)对象。失败。
  • 使用application / formdata类型发布。失败。

我在互联网上看到的所有解决方案都不适合我。

1 个答案:

答案 0 :(得分:1)

好的,经过几个小时的调试后我解决了这个问题,所以如果其他人面临同样的问题可以节省时间。这是 WebAPI问题。 WebAPI为“应用程序/ x-www-form-urlencoded”提供了MediaTypeFormatters。这个问题是由于过时的Abp.WebApi包的某些实现。将您的aspnet样板包更新到2016年9月28日的Abp v1.0版本。修复损坏的代码。并重新编译。这个问题应该解决。如果您仍然遇到问题,请联系我,也许我可以提供帮助。