Just downloaded 2013.1.319.340 and am receiving the following error when using the menu:
"The method or operation is not implemented".
(StackTrace)
[NotImplementedException: The method or operation is not implemented.]
System.Web.HttpRequestBase.get_HttpMethod() +29
System.Web.Routing.<>c__DisplayClass3.<
Match
>b__0(String method) +25
System.Linq.Enumerable.Any(IEnumerable`1 source, Func`2 predicate) +146
System.Web.Routing.HttpMethodConstraint.Match(HttpContextBase httpContext, Route route, String parameterName, RouteValueDictionary values, RouteDirection routeDirection) +164
System.Web.Routing.HttpMethodConstraint.System.Web.Routing.IRouteConstraint.Match(HttpContextBase httpContext, Route route, String parameterName, RouteValueDictionary values, RouteDirection routeDirection) +22
System.Web.Routing.Route.ProcessConstraint(HttpContextBase httpContext, Object constraint, String parameterName, RouteValueDictionary values, RouteDirection routeDirection) +56
System.Web.Routing.Route.ProcessConstraints(HttpContextBase httpContext, RouteValueDictionary values, RouteDirection routeDirection) +100
System.Web.Routing.Route.GetRouteData(HttpContextBase httpContext) +178
System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +233
Kendo.Mvc.Infrastructure.Implementation.RouteDataCache.RouteDataFactory(String url) +59
Kendo.Mvc.Infrastructure.Implementation.<
GetRouteData
>c__AnonStorey1B.<>m__26() +13
Kendo.Mvc.Infrastructure.Implementation.NoCache.Get(String key, Func`1 defaultValueFactory) +11
Kendo.Mvc.Infrastructure.Implementation.RouteDataCache.GetRouteData(String key, String url) +98
Kendo.Mvc.Infrastructure.Implementation.AuthorizationContextCache.GetAuthorizationContext(RequestContext request, String controllerName, String actionName, RouteValueDictionary routeValues) +362
Kendo.Mvc.Infrastructure.Implementation.ControllerAuthorization.IsAccessibleToUser(RequestContext requestContext, String controllerName, String actionName, RouteValueDictionary routeValues) +55
Kendo.Mvc.Infrastructure.Implementation.NavigationItemAuthorization.IsAccessibleToUser(RequestContext requestContext, INavigatable navigationItem) +186
Kendo.Mvc.UI.NavigatableExtensions.IsAccessible(INavigatable item, INavigationItemAuthorization authorization, ViewContext viewContext) +29
Kendo.Mvc.UI.NavigationItemContainerExtensions.WriteItem(TItem item, TComponent component, IHtmlNode parentTag, INavigationComponentHtmlBuilder`1 builder) +197
Kendo.Mvc.UI.<
WriteHtml
>c__AnonStorey76.<>m__247(MenuItem item) +24
(rest omitted for brevity)
The code is as follows:
@(Html.Kendo().Menu()
.Name(
"mn-case"
)
.Items(items =>
{
items.Add().Text(
"Dashboard"
).Action(
"Index"
,
"Dashboard"
,
new
{ caseId = caseId, area="Case" });
}))
context.MapRoute(
"CaseIndex"
,
"Case/{caseId}/{controller}"
,
new
{ action =
"Index"
},
new
RouteValueDictionary { {
"httpMethod"
,
new
HttpMethodConstraint(
"GET"
) }}
);
items.Add().Text(
"Dashboard"
).Url(@Url.Action(
"Index"
,
"Dashboard"
,
new
{ caseId = caseId, area="Case" }));
Thank you,
David Adams
8 Answers, 1 is accepted
Thank you for drawing our attention to this issue. Unfortunately, I was not able to replicate the issue locally and I will need a simple test project, which reproduces the problem. Thus I will be able to investigate the case locally and fix the issue.
As a side note, you can turn off security trimming functionality of the widget to avoid this:
@(Html.Kendo().Menu()
.Name(
"menu"
)
.SecurityTrimming(
false
)
Georgi Krustev
the Telerik team
new
RouteValueDictionary { {
"httpMethod"
,
new
HttpMethodConstraint(
"GET"
) }}
Here is a sample project demonstrating the error. http://sdrv.ms/ZfHEqI
Thank you,
David A.
Thank you for the test project. We was able to investigate the problem and to address it. The issue will be fixed in the next internal build of Kendo UI. I updated your Telerik points because of the involvement.
Georgi Krustev
the Telerik team
The version I currently use is 2013.1.514.340.
Most of the methods of the HttpRequestBase were added for the service pack. Could you provide the stacktrace or a runnable sample so I can check if we have missed some method or the reason for the exception is different?
Regards,Daniel
Telerik
[NotImplementedException: Die Methode oder der Vorgang ist nicht implementiert.]
System.Web.HttpRequestBase.get_HttpMethod() +361
RestfulRouting.RestfulHttpMethodConstraint.Match(HttpContextBase httpContext, Route route, String parameterName, RouteValueDictionary values, RouteDirection routeDirection) +572
System.Web.Routing.HttpMethodConstraint.System.Web.Routing.IRouteConstraint.Match(HttpContextBase httpContext, Route route, String parameterName, RouteValueDictionary values, RouteDirection routeDirection) +453
System.Web.Routing.Route.ProcessConstraint(HttpContextBase httpContext, Object constraint, String parameterName, RouteValueDictionary values, RouteDirection routeDirection) +513
System.Web.Routing.Route.ProcessConstraints(HttpContextBase httpContext, RouteValueDictionary values, RouteDirection routeDirection) +634
System.Web.Routing.Route.GetRouteData(HttpContextBase httpContext) +806
System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +783
Kendo.Mvc.Infrastructure.Implementation.RouteDataCache.RouteDataFactory(String url) +368
Kendo.Mvc.Infrastructure.Implementation.<
GetRouteData
>c__AnonStorey1B.<>m__26() +321
Kendo.Mvc.Infrastructure.Implementation.NoCache.Get(String key, Func`1 defaultValueFactory) +348
Kendo.Mvc.Infrastructure.Implementation.RouteDataCache.GetRouteData(String key, String url) +473
Kendo.Mvc.Infrastructure.Implementation.AuthorizationContextCache.GetAuthorizationContext(RequestContext request, String controllerName, String actionName, RouteValueDictionary routeValues) +1003
Kendo.Mvc.Infrastructure.Implementation.ControllerAuthorization.IsAccessibleToUser(RequestContext requestContext, String controllerName, String actionName, RouteValueDictionary routeValues) +464
Kendo.Mvc.Infrastructure.Implementation.NavigationItemAuthorization.IsAccessibleToUser(RequestContext requestContext, INavigatable navigationItem) +568
Kendo.Mvc.UI.NavigatableExtensions.IsAccessible(INavigatable item, INavigationItemAuthorization authorization, ViewContext viewContext) +368
Kendo.Mvc.UI.NavigationItemContainerExtensions.WriteItem(TItem item, TComponent component, IHtmlNode parentTag, INavigationComponentHtmlBuilder`1 builder) +744
Kendo.Mvc.UI.<
WriteHtml
>c__AnonStorey76.<>m__24B(MenuItem item) +300
Kendo.Mvc.Extensions.EnumerableExtensions.Each(IEnumerable`1 instance, Action`1 action) +417
Kendo.Mvc.UI.Menu.WriteHtml(HtmlTextWriter writer) +553
Kendo.Mvc.UI.WidgetBase.ToHtmlString() +378
Kendo.Mvc.UI.Fluent.WidgetBuilderBase`2.ToHtmlString() +379
JRDashboard.Helpers.HtmlMenuExtensions.Menu(HtmlHelper html) in c:\SVNRep\gg\jrdashboard\JRDashboard\JRDashboard\Helpers\HtmlMenuExtensions.cs:42
ASP._Page_Views_Shared__Layout_cshtml.Execute() in c:\SVNRep\gg\jrdashboard\JRDashboard\JRDashboard\Views\Shared\_Layout.cshtml:17
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +499
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +348
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +486
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer) +336
System.Web.WebPages.<>c__DisplayClass7.<
RenderPageCore
>b__6(TextWriter writer) +581
System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +308
System.Web.WebPages.WebPageExecutingBase.WriteTo(TextWriter writer, HelperResult content) +313
System.Web.WebPages.WebPageBase.Write(HelperResult result) +314
System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body) +461
System.Web.WebPages.WebPageBase.PopContext() +574
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +495
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +1081
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +649
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +712
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +323
System.Web.Mvc.<>c__DisplayClass1a.<
InvokeActionResultWithFilters
>b__17() +369
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +737
System.Web.Mvc.<>c__DisplayClass1c.<
InvokeActionResultWithFilters
>b__19() +370
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +644
System.Web.Mvc.Async.<>c__DisplayClass2a.<
BeginInvokeAction
>b__20() +383
System.Web.Mvc.Async.<>c__DisplayClass25.<
BeginInvokeAction
>b__22(IAsyncResult asyncResult) +482
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +429
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +370
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +377
System.Web.Mvc.<>c__DisplayClass1d.<
BeginExecuteCore
>b__18(IAsyncResult asyncResult) +306
System.Web.Mvc.Async.<>c__DisplayClass4.<
MakeVoidDelegate
>b__3(IAsyncResult ar) +365
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +446
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +380
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +309
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +326
System.Web.Mvc.Async.<>c__DisplayClass4.<
MakeVoidDelegate
>b__3(IAsyncResult ar) +365
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +446
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +380
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +309
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +326
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +305
System.Web.Mvc.<>c__DisplayClass8.<
BeginProcessRequest
>b__3(IAsyncResult asyncResult) +306
System.Web.Mvc.Async.<>c__DisplayClass4.<
MakeVoidDelegate
>b__3(IAsyncResult ar) +365
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +446
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +380
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +309
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +327
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +304
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +1176
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +650
public
static
MvcHtmlString Menu(
this
HtmlHelper html)
{
IPrincipal user = html.ViewContext.HttpContext.User;
var menuItems =
new
[]
{
new
{ Title =
"Dashboard"
, Action =
"Show"
, Controller =
"Dash"
, RequiredRoles = AuthorizationService.PUBLIC_REQUIRED_ROLE, Order = 0},
new
{ Title =
"Dash-Konfiguration"
, Action =
"Edit"
, Controller =
"Dash"
, RequiredRoles = AuthorizationService.PUBLIC_REQUIRED_ROLE, Order = 1 },
new
{ Title =
"Benutzerrollen"
, Action =
"Show"
, Controller =
"Admin"
, RequiredRoles = AuthorizationService.ADMIN_ROLE, Order = 3 },
new
{ Title =
"Webservice"
, Action =
"Show"
, Controller =
"WebserviceAdmin"
, RequiredRoles = AuthorizationService.ADMIN_ROLE, Order = 2 }
};
var items = menuItems.Where(
m => m.RequiredRoles.Split(
new
[] {
','
}, StringSplitOptions.RemoveEmptyEntries)
.Any(
r => user.IsInRole(r) || r.Equals(AuthorizationService.PUBLIC_REQUIRED_ROLE, StringComparison.InvariantCultureIgnoreCase)
)
)
.OrderBy(m => m.Order)
.GroupBy(m => m.RequiredRoles)
.ToDictionary(g => g.Key, g => g.ToList());
string
menuString = html.Kendo().Menu()
.Name(
"menu"
)
.Items(menuItemCollection =>
{
foreach
( var m
in
items[AuthorizationService.PUBLIC_REQUIRED_ROLE])
{
menuItemCollection.Add().Text(m.Title).Action(m.Action, m.Controller);
}
if
(items.ContainsKey(AuthorizationService.ADMIN_ROLE))
{
menuItemCollection.Add().Text(
"Administration"
).Items(children =>
{
foreach
(var m
in
items[AuthorizationService.ADMIN_ROLE])
{
children.Add().Text(m.Title).Action(m.Action, m.Controller);
}
});
}
}
)
.ToHtmlString();
return
new
MvcHtmlString(menuString);
}
Thank you for the additional information. It seems that the HttpMethod getter was missed in the service pack and was later added. Please try with the latest official release(Q2 2013) and let me know if the problem persists.
Regards,Daniel
Telerik