Я использую MvcSitemapProvider для моего проекта ASP MVC 5.MvcSitemapProvider throwing Исключение переполнения при использовании currentNode
Я внедрил пользовательскую авторизацию, чтобы проверить, соответствуют ли роли из карты сайта ролям пользователей.
Это то, что он выглядит следующим образом:
public class CustomAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool authorize = false;
var roles = SiteMaps.Current.CurrentNode.Roles;
foreach (var role in roles)
if (System.Web.Security.Roles.IsUserInRole(role))
authorize = true;
return authorize;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
Моя проблема заключается в том, что при использовании SiteMaps.Current.CurrentNode.Roles
он бросает An unhandled exception of type 'System.StackOverflowException' occurred in System.Web.dll
, и я понятия не имею, почему. Объекты заполнены, ничто не равно нулю.
Почему это происходит? Сейчас я не знаю, как заставить это работать как простой currentNode, не работает ...
Когда вы отлаживаете, он получает доступ к каждому циклу или является ли исключение перед этим? – Casey
Он вызывается методом currentNode, который является методом mvcsitemapprovider. Вот почему я не знаю, что делать, потому что я не могу повлиять на нее и не знаю, почему она брошена. – Rovdjuret