Ошибка 500 при запуске модульного теста Visual Studio ASP.NET

Лямбда-функция - анонимная функция, которую вы создаете в строке. Он может захватывать переменные, как объясняли некоторые (например, http://www.stroustrup.com/C++11FAQ.html#lambda ), но есть некоторые ограничения. Например, если есть интерфейс обратного вызова, подобный этому,

void apply(void (*f)(int)) {
    f(10);
    f(20);
    f(30);
}

, вы можете написать функцию на месте, чтобы использовать ее как переданную для применения ниже:

int col=0;
void output() {
    apply([](int data) {
        cout << data << ((++col % 10) ? ' ' : '\n');
    });
}

Но вы не можете этого сделать:

void output(int n) {
    int col=0;
    apply([&col,n](int data) {
        cout << data << ((++col % 10) ? ' ' : '\n');
    });
}

из-за ограничений в стандарте C ++ 11. Если вы хотите использовать захваты, вам нужно полагаться на библиотеку и

#include  

(или какую-либо другую библиотеку STL, такую ​​как алгоритм, чтобы получить ее косвенно), а затем работать с std :: function, а не передавать нормальные функции как такие параметры:

#include 
void apply(std::function f) {
    f(10);
    f(20);
    f(30);
}
void output(int width) {
    int col;
    apply([width,&col](int data) {
        cout << data << ((++col % width) ? ' ' : '\n');
    });
}

16
задан marc 6 November 2008 в 15:11
поделиться

7 ответов

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

1
ответ дан cfeduke 6 November 2008 в 15:11
поделиться

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

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

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

этим решением я решил свою проблему. Надежда u находит что-то полезным из этого Ответа.

Спасибо, Priyesh Patel

0
ответ дан 6 November 2008 в 15:11
поделиться

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

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

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

2
ответ дан ben 7 November 2008 в 01:11
поделиться

Comment out the whole bit of web.config like this

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

It worked for me

0
ответ дан 30 November 2019 в 21:03
поделиться

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

0
ответ дан 30 November 2019 в 21:03
поделиться

Я обнаружил, что при использовании 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>

Удачи.

8
ответ дан 30 November 2019 в 21:03
поделиться

Я столкнулся с похожей проблемой при тестировании веб-сервиса, в котором используется проект .NET 3.51. Я получал ошибку IIS 500. Я удалил старые привязки сборки, как прокомментировал Хэл Диггс, и это сработало.

1
ответ дан 30 November 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: