Не удалось загрузить файл или сборку 'System.Web.Mvc - PullRequest
5 голосов
/ 18 января 2012

У меня есть решение с различными проектами, один из которых - проект MVC 3, а другой - тестовый проект.

Из тестового проекта я пытаюсь проверить поведение своих контроллеров.Но когда я запускаю тест, система выдает ошибку, сообщающую мне следующее:

System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'System.Web.Mvc, версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из ее зависимостей.Системе не удается найти указанный файл.
WRN: ведение журнала привязки сборки отключено. Чтобы включить ведение журнала ошибки привязки сборки, установите для параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) значение 1.

код из теста os следующий:

[TestMethod]
public void TestMethod()
{
    var myService = new Mock<IMyService>();
    myService.Setup(a => a.ReadAuthorizationRequest())
        .Returns<EndUserAuthorizationRequest>(null);
    int error = 0;
    var controller = new myController(myService.Object);

    try
    {
        var actionResult = controller.Authorize();
    }
    catch (HttpException exception)
    {
        error = exception.GetHttpCode();
    }
    Assert.AreEqual(403, error);
}

контроллер:

public class myController: Controller
{
    private readonly IMyService _service;

    public OAuthController(IMyService service)
    {
        _service = service;
    }

    [Authorize, AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public ActionResult Authorize()
    {
        ClientApplication requestingClient;
        var request = _service.ReadAuthorizationRequest();
        if (request == null)
        {
            throw new HttpException((int) HttpStatusCode.BadRequest,
                "Missing authorization request.");
        }
     }
}

Как вы можете видеть, я пытаюсь проверить поведение контроллера, чтобы каждый раз, когда службане читает запрос, контроллер должен выдать исключение httpExatusCode 403.

Что не так с этим.Заранее спасибо.

Ответы [ 4 ]

12 голосов
/ 18 января 2012

За исключением:

System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'System.Web.Mvc, версия = 1.0.0.0

Itпытается загрузить MVC версии 1. Возможно, вам потребуется выполнить перенаправление привязки сборки в вашем тестовом проекте, так же, как в web.config:

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

Поместите это в configurationраздел app.config вашей тестовой сборки.

2 голосов
/ 19 августа 2013

Если кто-то ищет решение этой проблемы в Visual Studio 2012, этот веб-сайт мне помог:

http://www.yeronimo.nl/post/2013/03/27/Error-1-Referencesvcmap-Could-not-load-file-or-assembly-xxxxxxx-etc

(также: http://www.christowles.com/2012/08/could-not-load-file-or-assembly.html)

Щелкните правой кнопкой мыши ссылку на веб-службу (Reference.svcmap) в обозревателе решений проекта (в App_WebReferences> [Имя вашей веб-службы]> Reference.svcmap) и выберите «Настроить ссылку на службу ...», затем снимите флажок флажок «Повторное использование типов в ссылочных сборках».

Нажмите ОК, затем пересоберите проект! У меня это сработало!

2 голосов
/ 03 декабря 2012

У меня была такая же ошибка после установки VS 2012, ни один из проектов в моем решении не ссылается на System.Web.Mvc. Эта проблема была решена для меня, когда я добавил System.Web.Mvc.dll в GAC.

Вот шаги, которые я сделал:

  1. Загрузите файл dll System.Web.Mvc 1.0.
  2. Нажмите кнопку Пуск, выберите Все программы, выберите Visual Studio, Инструменты Visual Studio, а затем нажмите Командная строка Visual Studio.
  3. Введите следующее: GacUtil -I {Папка, в которую вы загрузили System.Web.Mvc.dll}, т.е. C: \ Users \ Ваше имя \ Desktop \ System.Web.Mvc.dll

Надеюсь, это поможет.

1 голос
/ 18 января 2012

Или вы можете добавить ссылку на правильную версию DLL в тестовом проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...