asp.net WebApi在webconfig中添加MediaTypeFormatter

时间:2015-09-28 20:14:12

标签: c# asp.net-web-api web-config

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

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文件中的

节点。但我不知道添加它的正确语法。我试过谷歌搜索但没有成功。

1 个答案:

答案 0 :(得分:1)

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

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