C# asp.net WebApi在webconfig中添加MediaTypeFormatter

C# asp.net WebApi在webconfig中添加MediaTypeFormatter,c#,asp.net-web-api,web-config,C#,Asp.net Web Api,Web Config,我在扩展MediaTypeFormatter的TestFormatter.cs中有一个名为TestFormatter的自定义媒体格式化程序。现在我想添加这个格式化程序。一种选择是: config.Formatters.Add(new BinaryMediaTypeFormatter()); 如果我想在web.config文件中添加此媒体类型格式化程序,该怎么办。我见过 <webApi.webServer> <services> <replace

我在扩展MediaTypeFormatter的
TestFormatter.cs中有一个名为
TestFormatter
的自定义媒体格式化程序。现在我想添加这个格式化程序。一种选择是:

config.Formatters.Add(new BinaryMediaTypeFormatter());
如果我想在web.config文件中添加此媒体类型格式化程序,该怎么办。我见过

<webApi.webServer>
    <services>
      <replace serviceType="System.Web.Http.ExceptionHandling.IExceptionHandler, System.Web.Http" serviceClass="Slb.Avocet.WebApiServer.ExceptionHandling.GlobalExceptionHandler, Slb.Avocet.WebApiServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <replace serviceType="System.Web.Http.Description.IDocumentationProvider, System.Web.Http" serviceClass="Slb.Avocet.WebApiServer.Documentation.XmlDocumentationProvider, Slb.Avocet.WebApiServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </services>
    <mediaTypeFormatters>
    </mediaTypeFormatters>
    <messageHandlers>      
    </messageHandlers>
  </webApi.webServer>


web.config文件中的节点。但我不知道添加它的正确语法。我尝试过谷歌搜索,但没有成功。

您试图做的事情不能仅通过使用配置文件设置来完成;不幸的是,您需要编写一些代码来达到您想要的目的。这是因为web.config文件是ASP.NET/IIS构造,而WebAPI的设计目的是(在IIS/ASP.NET之外)


我建议将您自己的自定义ConfigurationSection添加到配置文件中。将MediaTypeFormatters属性/元素添加到ConfigurationSection类中,并使该属性成为ConfigurationElementCollection。然后,在网站的Global.asax中,添加一些代码,将自定义集合中的任何MediaTypeFormatter复制到附加到HttpConfiguration的“live”集合中。这包含使用类似方法使用web.config设置设置HttpConfiguration.IncludeErrorDetailPolicy属性的示例;虽然这并不完全是您想要做的,但它应该提供一个很好的起点。

您在哪里看到过它?在默认的webconfig文件中。在哪个部分下?在下。更新了我的问题。我认为这个答案是正确的。在进一步挖掘之后,我发现除了创建自定义节点并访问它之外,没有其他方法可以做到这一点。