Подтвердить что ты не робот

500 Ошибка выполнения Visual Studio ASP.NET Unit Test

У меня есть следующий метод в моем проекте unit test:

    [TestMethod]
    [HostType("ASP.NET")]
    [UrlToTest("http://localhost:3418/Web/SysCoord/ChooseEPA.aspx")]
    [AspNetDevelopmentServerHost("%PathToWebRoot%")]
    public void TestMethod1()
    {
        Page page = TestContext.RequestedPage;
        Assert.IsTrue(false, "Test ran, at least.");
    }

Я получаю это исключение:

Тест-адаптер "WebHostAdapter" выдал исключение при запуске теста "TestMethod1". Не удалось правильно настроить веб-сайт; получение информации о процессе ASP.NET не удалось. Запрос http://localhost:3418/SysCoord/VSEnterpriseHelper.axd 'возвратил ошибку: Удаленный сервер ответил на ошибку: (404) Не найдено. Удаленный сервер ответил на ошибку: (404) Не найден.

Страница работает так, как должна в браузере по URL: http://localhost:3418/Web/SysCoord/ChooseEPA.aspx.

Этот физический путь: C:\ESI\HR_Connect2\BenefitChangeSystem\Application_DEV\Web\SysCoord.

Любые идеи будут оценены.

Обновление 1

Добавлено следующее в мой файл web.config в этой статье. Также сделал web.config доступным для записи и убил/перезапустил веб-сервер разработки. Никаких изменений в поведении.

<location path="VSEnterpriseHelper.axd">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

Обновление 2

Изменение атрибута AspNetDevelopmentServerHost в эквиваленте [AspNetDevelopmentServerHost ( "% PathToWebRoot%\solutionfolder\webfolder", "/webfolder" )] разрешило проблему 404.

К сожалению, тест начал возвращать 500 ошибок. Прогресс, но не много. Пробная версия и ошибка с чистым проектом привели к выводу, что проблемы с пользовательскими классами в web.config вызывали проблему.

Например:

    <profile enabled="true" defaultProvider="MyProfileProvider">
        <providers>
            <add name="MyProfileProvider" connectionStringName="ProfileConnectionString" applicationName="/MyApp" type="System.Web.Profile.SqlProfileProvider"/>
        </providers>
        <properties>
            <add name="Theme" type="String" defaultValue="Default"/>
            <add name="LastLogon" type="DateTime"/>
            <add name="LastLogonIp" type="String"/>
            <!--
            <add name="EmployeeSearchCriteria" type="MyApplicationFramework.Profile.EmployeeSearchCriteria"/>
            <add name="DocumentSearchCriteria" type="MyApplicationFramework.Profile.DocumentSearchCriteria"/>
            -->
        </properties>
    </profile>

С критериями, описанными выше, тест прошел нормально. С их раскомментами была возвращена ошибка 500.

У кого-то была аналогичная проблема в прошлом?

4b9b3361

Ответ 1

У меня была эта проблема раньше и в этот момент сдался после прочтения всего, что я мог сообщить об этом (включая этот поток).

Решение оказалось простым в моем случае. Все, что мне нужно было сделать, это не использовать атрибуты теста ASP.NET и просто проверять проект MVC как DLL.

Шаг 1

Удалите дополнительные атрибуты из теста.

[TestMethod]
public void TestMethod1()
{
    Page page = TestContext.RequestedPage;
    Assert.IsTrue(false, "Test ran, at least.");
}

Шаг 2

В обложке кода снимите флажок с проекта MVC и добавьте DLL MVC Project вручную.

alt text

Voila, он получает инструменты как обычная сборка, отсутствие ошибок, не разворачивает сервер разработки, также не подводит Team Build.

Ответ 2

Я обнаружил, что с помощью vs2010 я не ограничиваюсь только 4.0 приложениями. Я, однако, обнаружил, что при тестировании веб-приложения и использовании старого перенаправления версии System.Web.Extensions вы можете получить сообщение об ошибке. Удаление следующего раздела из файла Web.config устраняет проблему:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Удачи.

Ответ 3

Я получал ту же проблему, что и вы, однако мой опыт был немного другим.

Я нахожусь на vista x64, мои разработчики в xp x64... у них вообще не было никаких проблем. Я только что обновил и не смог запустить любой unit test для проекта asp.net MVC. Я получал ту же самую 500 ошибок, которые вы получали.

Я отключил покрытие кода, все волшебное начало работать.

Ответ 4

Основываясь на ваших доказательствах, я бы предположил, что ссылка на какую-либо сборку содержит MyApplicationFramework.Profile.EmployeeSearchCriteria отсутствует в проекте unit test или в веб-проекте, хотя я бы действительно подумал, что вам потребуется только ссылка в веб-проекте но я не осведомлен о том, как ведет себя веб-сервер VS, когда используется как часть unit test.

Ответ 5

У меня возникла аналогичная проблема с тестированием веб-сервиса, где проект -.NET 3.51. Я получил ошибку IIS 500.  Я удалил старые сборки bindinds, как прокомментировал Hal Diggs, и это сработало.

Ответ 6

У меня получилось такое же сообщение об ошибке при модульном тестировании веб-приложения с помощью Visual Studio 2010. Единственное отличие в том, что я использовал IIS, то есть я опустил директиву [AspNetDevelopmentServerHost("%PathToWebRoot%")].

Я подозреваю, что проблема заключается в том, что я использовал версию IIS 5.1. Подробнее здесь:

http://ibsta.blogspot.com/2011/01/unit-testing-fun-under-visual-studio.html

Ответ 7

Я установил по умолчанию unit test, который появился с ошибкой, которая привела меня сюда. Я просто удалил следующее (ниже). Затем щелкнул отладочный текущий контекст и стрелу, отлично: S.

    [HostType("ASP.NET")]
    [AspNetDevelopmentServerHost("C:\\Inetpub\\....]

Ответ 8

У меня возникла такая же проблема с модульным тестированием. И нашел причину проблемы, а также ее решить. Проблема заключается только в правах доступа для каталога.

В моем случае я установил VSTS на другой диск (d), а затем по умолчанию. Поэтому только для того, чтобы предоставить пользователям полный доступ к PCNAME\ASPNET для всего каталога \Program Files\Microsoft Visual Studio 9.0.

Я использую Windows XP, но если вы используете оконный сервер, тогда предоставляете права доступа пользователю NetworkServices.

Благодаря этому решению я решил свою проблему. Надеюсь, что вы найдете что-то полезное из этого ответа.

Спасибо, Прийеш Патель

Ответ 9

Прокомментируйте весь бит web.config, как это

<!-- <location path="VSEnterpriseHelper.axd">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>   </location>   -->

Это сработало для меня

Ответ 10

Убедитесь, что ваше веб-приложение предназначено для Framework 4.0. Если вы пытаетесь проверить 2.0, 3.0 или 3.5, вы получите внутреннюю ошибку сервера (500).

Ответ 11

У меня возникла такая же проблема. Затем я проверил свойства как веб-проекта, так и проекта unit test. И обнаружил, что целевая структура была отлична друг от друга. Я установил целевую структуру обоих проектов в .Net framework 4 (в моем случае). Наконец снова запущен тестовый метод, и он сработал.

Спасибо.

Ответ 12

Для меня это вызвало проблему Resharper. Как только я приостановил его (Tools → Options → Resharper → General → Suspend), все сработало. (используя VS2010SP1 и Resharper Ultimate 2016.1.2)