api是什么 - c# web api开发



从Web API帮助页面中排除媒体类型示例 (2)

我是Web API使用的新手,我遇到问题的问题我无法找到解决方案。 常见的问题是,当人们获得而不是application / x-www-form-urlencoded媒体类型样本时

无法为媒体类型'application / x-www-form-urlencoded'生成样本。 不能使用格式化程序'FormUrlEncodedMediaTypeFormatterTracer'来写入'Task'类型。

常见的建议是在Config文件中指定自己的示例,但我想知道,我可以删除此媒体类型的帮助部分吗?

config.SetSampleForType("", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(object));

给我一个空白的部分。

提前致谢!


如果要删除特定格式类型,请使用以下代码:

            var matches = config.Formatters
                            .Where(f => f.SupportedMediaTypes
                                         .Where(m => m.MediaType.ToString() == "application/xml" ||
                                                     m.MediaType.ToString() == "text/xml" ||
                                                     m.MediaType.ToString() == "application/x-www-form-urlencoded")

                                         .Count() > 0)
                            .ToList();
        foreach (var match in matches)
            config.Formatters.Remove(match);

  • 请问您为什么要删除此部分? 就像你不想在你的服务中支持formurlencoded formatter? 如果是,那么您可以从格式化程序集合中删除格式化程序本身,在这种情况下,此部分将不会显示。

    config.Formatters.Clear();
    config.Formatters.Add(new JsonMediaTypeFormatter());
    config.Formatters.Add(new XmlMediaTypeFormatter());  
    
  • 或者,您可以在Areas\HelpPage\SampleGeneration\HelpPageSampleGenerator.cs文件中执行以下更改(highlighed comments)并执行以下操作,即过滤掉格式化程序:

        // Do the sample generation based on formatters only if an action doesn't return an HttpResponseMessage.
        // Here we cannot rely on formatters because we don't know what's in the HttpResponseMessage, it might not even use formatters.
        if (type != null && !typeof(HttpResponseMessage).IsAssignableFrom(type))
        {
            object sampleObject = GetSampleObject(type);
    
            // Change Begin --------------------------------------
            IEnumerable<MediaTypeFormatter> filteredFormatters = formatters.Where(frmtr => frmtr.GetType() != typeof(JQueryMvcFormUrlEncodedFormatter));
    
            foreach (var formatter in filteredFormatters)
            {
    
            // Change End --------------------------------------
    




asp.net-web-api