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

ins*_*um_ 28 c# asp.net-web-api

我是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));
Run Code Online (Sandbox Code Playgroud)

给我一个空白的部分.

提前致谢!

Kir*_*lla 54

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

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

        // 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 --------------------------------------
    
    Run Code Online (Sandbox Code Playgroud)

  • 我错了,我试图删除这样的格式化程序:`var formatter = _config.Formatters.FormUrlEncodedFormatter; _config.Formatters.Remove(format);`你的代码就像预期的那样工作!谢谢! (2认同)