2014-10-01 4 views
5

Я обновил MVC5 и Web Api 2.2, я создал веб-приложение MVC. Внутри этого я добавил пустой веб-API, определенный как дочерний для моего основного проекта, все, что я хочу, это защитить мои данные, Маршрутизация работала хорошо. но есть некоторые данные, я хочу, чтобы в моем контексте, при попытке попасть в локального хоста: 34862/API/счет/тест я получаю сообщение об ошибкеНе удалось загрузить файл или сборку «System.Web.Http.Owin»

Вот мои коды в моем ApiController

[RoutePrefix("api/account")] 
public class AccountController : ApiController 
{ 
    private readonly IAccountUoW _iaUoW; 

    public AccountController(IAccountUoW iaUoW) 
    { 
     _iaUoW = iaUoW; 
    } 

    [Route("")] 
    [HttpGet] 
    public string Get() 
    { 
     return "test"; 
    } 

    [Authorize] 
    [Route("test")] 
    [HttpGet] 
    public async Task<IHttpActionResult> GetTourInfos() 
    { 
     var ctx = (OwinContext)Request.GetOwinContext(); 
     ClaimsPrincipal user = ctx.Authentication.User; 
     IEnumerable<Claim> claims = user.Claims; 
     return Ok(); 
    } 
} 

мои ссылки я добавить от NuGet

  • Microsoft ASP.N ET Web API 2,2
  • Owin
  • Microsoft.Owin
  • Microsoft.Owin.Host.SystemWeb
  • Microsoft.Owin.Security.Cookies
  • Microsoft.Owin.Security.OAuth

я также проверил ссылки, добавленные мной из моего основного проекта в мой проект, у него такая же версия из моего подпроекта

здесь packages.config из подпроекта

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.AspNet.WebApi" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.Owin" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Cookies" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.OAuth" version="3.0.0" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" /> 
    <package id="Owin" version="1.0" targetFramework="net45" /> 
</packages 

Вот мой packages.config из моего основного проекта

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Antlr" version="3.4.1.9004" targetFramework="net45" /> 
    <package id="bootstrap" version="3.0.0" targetFramework="net45" /> 
    <package id="EntityFramework" version="6.1.1" targetFramework="net45" /> 
    <package id="jQuery" version="1.10.2" targetFramework="net45" /> 
    <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Core" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Owin" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Mvc" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Razor" version="3.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Owin" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebPages" version="3.2.2" targetFramework="net45" /> 
    <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Cookies" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Facebook" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Google" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.MicrosoftAccount" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.OAuth" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Twitter" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" /> 
    <package id="Modernizr" version="2.6.2" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" /> 
    <package id="Ninject" version="3.2.0.0" targetFramework="net45" /> 
    <package id="Ninject.MVC5" version="3.2.1.0" targetFramework="net45" /> 
    <package id="Ninject.Web.Common" version="3.2.0.0" targetFramework="net45" /> 
    <package id="Ninject.Web.Common.WebHost" version="3.2.0.0" targetFramework="net45" /> 
    <package id="Ninject.Web.WebApi" version="3.2.1.0" targetFramework="net45" /> 
    <package id="Owin" version="1.0" targetFramework="net45" /> 
    <package id="Respond" version="1.2.0" targetFramework="net45" /> 
    <package id="Unity" version="3.5.1404.0" targetFramework="net45" /> 
    <package id="WebActivatorEx" version="2.0" targetFramework="net45" /> 
    <package id="WebGrease" version="1.5.2" targetFramework="net45" /> 
</packages> 

вот моя ошибка

Не удалось загрузить файл или сборку «System.Web.Http.Owin, Version = 5.2.2.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35» или одна из его зависимостей. Система не может найти указанный файл.

Из диспетчера пакетов я запускаю также пакет обновления Microsoft.AspNet.WebApi -reinstall, но все же ошибка есть, чего я не вижу? кто-нибудь, помогите мне? любой ответ будет оценен заранее.

+1

TNX снова для комментария, извините я забыл только добавить ту же ссылку на основной и вспомогательный проекты, например, если вы добавите Microsoft.AspNet.WebApi.WebHost в подпроект, вы также должны добавить в основной проект с той же ссылкой и версией.иначе ссылка не будет загружаться, или вы получите сообщение об ошибке. –

ответ

9

Проблема заключается в том, что Web Api 2.2 использует версию microsoft.owin 2.0.2. Вы можете изменить поведение в файле web.config.

Если ваша версия microsoft.owin является 3.0.0, в строке "bindingRedirect", в "newVersion" установить 3.0.0

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="3.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Regard,

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