无法解析URL在区域站点地图结点(Could not resolve URL for sitemap

2019-10-17 08:21发布

搜索互联网,我发现类似的问题 ,但我只用在其他项目中的节点出现。

错误

无法解析URL的站点地图结点宪章德Interveniência它代表控制器processo行动carta_interveniencia。 确保该站点地图节点的路由就可以解决,而且其默认值允许解决当前站点地图节点的URL。

网站地图

<mvcSiteMapNode title="Cadastros" clickable="false" roles="*" >

    <mvcSiteMapNode title="Processos" controller="processos" action="index">
        <mvcSiteMapNode title="Novo" action="novo" />
        <mvcSiteMapNode title="Editar" action="editar" dynamicNodeProvider="CreditoImobiliarioBB.Web.Infra.Sitemap.ProcessosDynamicNodeProvider, CreditoImobiliarioBB.Web" />
        <mvcSiteMapNode title="Detalhes" action="detalhes" preservedRouteParameters="id" dynamicNodeProvider="CreditoImobiliarioBB.Web.Infra.Sitemap.ProcessosDynamicNodeProvider, CreditoImobiliarioBB.Web">
            <mvcSiteMapNode title="Documentos" key="ProcessoDocumentos2" clickable="false" area="Documentos" controller="processo">
                <mvcSiteMapNode title="Carta de Interveniência" preservedRouteParameters="id" action="carta_interveniencia"></mvcSiteMapNode>
            </mvcSiteMapNode>
        </mvcSiteMapNode>

    </mvcSiteMapNode>

区注册

public class DocumentosAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Documentos";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            name: "Documentos",
            url: "{controller}/{id}/documento/{action}",
            defaults: null,
            constraints: new { id = @"^\d+$" },
            namespaces: new string[] { "CreditoImobiliarioBB.Web.Areas.Documentos" }
        );
    }
}

Answer 1:

解析器的默认实现的行为这种方式。 它试图找到基于断正是你在你的站点地图中的路线。 由于您的Sitemap没有id参数和你有一个约束,路由未发现和解析器抛出异常。 然而,有没有真正的理由解析器有当它加载的网站地图来解决所有的URL。

你可以创建自己的解析器和注册,与地图。 复制和默认的一个粘贴到自己的类。 附近的默认代码底部是这样的:

if (string.IsNullOrEmpty(returnValue))
{
    throw new UrlResolverException(string.Format(Messages.CouldNotResolve, mvcSiteMapNode.Title, action, controller, mvcSiteMapNode.Route ?? ""));
}

 _urlkey = key;
_url = returnValue;
return returnValue;

更改代码如下:

if (string.IsNullOrEmpty(returnValue))
{
    return Guid.NewGuid().ToString();
}

 _urlkey = key;
_url = returnValue;
return returnValue;


文章来源: Could not resolve URL for sitemap node in Area