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.
У кого-то была аналогичная проблема в прошлом?
Ответы
Ответ 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)