2013-09-15 2 views
2

Я пробовал Unity 3 для WebAPI, размещенного в Катане.Unity Dependency Resolver не работает с 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); 
+0

Вы все еще видите проблему здесь? Я заметил, что вы задали другой вопрос, связанный с 'Обязательным параметром, не работающим в Web Api', и вы, похоже, прошли эту проблему ... это все еще проблема? если да, не могли бы вы поделиться более подробной ошибкой ... –

+0

Я не нашел для этого решения. Вместо этого я использовал autofac IOC в качестве временного решения, и у него не было проблем. (у autofac был пакет nuget, упакованный для webapi 5.0) –

+0

Исключение для исключения инноваций. Не удалось загрузить System.Web.Http. Однажды я видел ошибку, связанную с материалом owin. Я предполагаю, что это связано с версией dll. –

ответ

4

Если вы используете пакет 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> 
+0

Webapi размещен в owin, у меня нет файла web.config. –

+0

Вместо этого используйте app.config. –

Смежные вопросы