MissingFieldException MercatorIshopNs.MercatorIshop._TunnelObject

Le message d'erreur suivant peut être rencontré : MissingFieldException : Champ introuvable : MercatorIshopNs.MercatorIshop._TunnelObject

Si une version 1.0.6 ou ultérieure de MercatorIshopAspx.dll est utilisée, il n'est plus autorisé d'adresser directement la propriété _TunnelObject de MercatorIshop. En effet, l'objet tunnel appartient à chaque instance du gestionnaire de pool et donc, il ne pas possible de pouvoir accéder directement à un des ces objets sans en préciser l'instance. Dès lors, il est obligatoire de passer via les méthodes _EvalXxx qui appellent bien la méthode virtuelle nothing() qui sollicite correctement le gestionnaire d'instances.

Dans notre exemple de site complet, la méthode GetCaddie de MasterPage.cs qui était comme suit : (en gras les expressions non autorisées)

protected string GetCaddie()
{
    if (MercatorIshop._TunnelObject == null) 
        return "Votre caddie: 0 article > Eur 0.00 "; 
    int TotQ = MercatorIshop._EvalInt("pieds_v_tmp.tot_q"); 
    double TotEur = MercatorIshop._EvalDouble("pieds_v_tmp.tot_ttc_dv");  
    return "[a href=\"ShowCaddie.aspx?topic=0\"]Votre caddie[/a]: [span id=\"tot_q\"]" + TotQ.ToString() + "[/span] article" + Api.Iif(TotQ ] 1, "s", "") + " > EUR [span id=\"tot_eur\"]" + TotEur.ToString(MercatorIshop._TunnelObject.pict_base).Trim() + "[/span]";
}

a été modifiée comme suit :

protected string GetCaddie()

    return "[a href=\"ShowCaddie.aspx?topic=0\"]Votre caddie[/a]: " + MercatorIshop._EvalString("'[span id='+chr(34)+'tot_q'+chr(34)+']'+ltrim(transform(pieds_v_tmp.tot_q,m.PICT_Q))+'[/span] article'+iif(pieds_v_tmp.tot_q]1,'s','')+' ] EUR [span id='+chr(34)+'tot_eur'+chr(34)+']'+ltrim(transform(pieds_v_tmp.tot_ttc_dv,m.PICT_BASE))+'[/span]'"); 
}

 

Dans ces codes HTML, il faut remplacer [ par < et ] par >.