asp.net Web Api 在网络配置中添加 MediaTypeFormatter

asp.net WebApi add MediaTypeFormatter in webconfig

我在 TestFormatter.cs extending MediaTypeFormatter 中有一个名为 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 被设计为 self-hosted(在 IIS 之外 / ASP.NET)。

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