Я могу подтвердить, что эта проблема легко воспроизводима.Просто создайте новый проект MVC5 из шаблона по умолчанию и замените Views/Home/Index.cshtml
на:
@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>ASP.NET</h1>
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
<p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
</div>
<div class="row">
<span>@ViewBag.Title</span>
@* ... *@
@* ~ 5000 times of "<span>@ViewBag.Title</span>" *@
@* ... *@
<span>@ViewBag.Title</span>
</div>
Запустите ваш проект и после некоторого loooong процесса загрузки System.StackOverflowException
выбрасывается из App_Web_ufrc1vtb.dll
безStackTrace (StackTrace == null
).
Я советую открыть проблему на github , однако вы можете обойти эту проблему, уменьшив размер .cshtml
.Например, я создаю частичное представление _PartView.cshtml
следующим образом:
<div>
<span>@ViewBag.Title</span>
@* ... *@
@* ~ 50 times of "<span>@ViewBag.Title</span>" *@
@* ... *@
<span>@ViewBag.Title</span>
</div>
Затем я создаю другое частичное представление _PartOfPartsView.cshtml
следующим образом:
<div>
@{Html.RenderPartial("_PartView");}
@* ... *@
@* ~ 20 times of "@{Html.RenderPartial("_PartView");}" *@
@* ... *@
@{Html.RenderPartial("_PartView");}
</div>
И, наконец, изменяю Views/Home/Index.cshtml
как это:
<div class="row">
@{Html.RenderPartial("_PartOfPartsView");}
@* ... *@
@* ~ 10 times of "@{Html.RenderPartial("_PartOfPartsView");}" *@
@* ... *@
@{Html.RenderPartial("_PartOfPartsView");}
</div>
Это в общей сложности 10 000 раз <span>@ViewBag.Title</span>
и все работает нормально.