此资源不支持请求实体的媒体类型“text / plain”

时间:2017-07-05 08:01:52

标签: c# .net asp.net-mvc asp.net-web-api asp.net-web-api2

我正在使用POST请求编写服务:

    [HttpPost]
    [ActionName("Post")]
    public HttpResponseMessage Post([FromBody]string JStringCont)
    {
       ....
    }

对此服务的呼叫如下:

    string jsonContent="[{some json}]"
    StringContent content = new StringContent(jsonContent);
    _oHttpClient = new HttpClient();
    _oHttpClient.DefaultRequestHeaders.Accept.Clear();
_oHttpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

response = _oHttpClient.PostAsync(requestURI, content).Result;

通过发送参数stringcontent显然可以调用服务。 我不被允许改变服务被调用的方式。

我可以自行更改服务。
POST方法无法以字符串格式接受。 在POST请求中我可以使用哪些参数可以接受stringcontent ??

目前它正在给我错误:

  

回复:UnsupportedMediaType

     

{“Message”:“此资源不支持请求实体的媒体类型'text / plain'。”,“ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体内容中读取'String'类型的对象输入'text / plain'。“,”ExceptionType“:”System.Net.Http.UnsupportedMediaTypeException“,”StackTrace“:”at System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent content,Type type,IEnumerable { {1}} 1格式化程序,IFormatterLogger formatterLogger,CancellationToken cancellationToken)“}

2 个答案:

答案 0 :(得分:1)

您应该允许JsonMediaTypeFormatter使用Content-Type: text/plain解析请求。因此,在启动时,您需要的应​​用程序(在Startup.csWebApiConfig.cs文件中) -

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));

config是HttpConfiguration对象。

答案 1 :(得分:0)

System.AggregateException:发生一个或多个错误。 ---> System.Net.Http.UnsupportedMediaTypeException:否MediaTypeFormatter 可用于从内容中读取类型为“字符串”的对象 媒体类型为“文本/纯文本”。

在进行以返回类型为字符串的put调用时,我遇到了错误,

我使用putasync作为返回字符串作为Task字符串。

问题已解决,这也将为您服务