Unity Dependency Resolver 不适用于 Katana和 WebAPI

本文关键字:Katana WebAPI 适用于 不适用 Dependency Resolver Unity | 更新日期: 2023-09-27 18:31:20

我尝试了Unity 3,用于托管在Katana中的WebAPI。

我收到一个异常,即 system.web.http 无法在启动上加载。

有人做过这项工作吗?

HttpConfiguration apiConfig = new HttpConfiguration();
apiConfig.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
apiConfig.Formatters.Remove(apiConfig.Formatters.XmlFormatter);
apiConfig.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
apiConfig.DependencyResolver = new UnityDependencyResolver(_container);
app.UseWebApi(apiConfig);

Unity Dependency Resolver 不适用于 Katana和 WebAPI

如果您使用的是 Unity.WebAPI 包,则取决于 System.Web.Http v4.0。为了在 Web API v2 中使用它,您需要添加程序集绑定重定向到 web.config:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>