19 messaggi dal 17 febbraio 2013
Ciao a tutti,

ho attivato il routing (lato programmazione e non tramite configurazione IIS) di alcune pagine aspx su un sito che sto gestendo; il routing funziona regolarmente, ma da quando l'ho attivato ho 2 problemi:

1) ho un adrotator così programmato che, conil routing attivo, non si aggiorna più in automatico ogni 5 secondi
<asp:ScriptManager ID="SM_Banner" runat="server" />
    <asp:Timer ID="Timer_Banner" Interval="5000" runat="server" />
    <asp:UpdatePanel ID="UP_Banner" runat="server">
      <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer_Banner" EventName="Tick" />
      </Triggers>
      <ContentTemplate>
        <asp:AdRotator ........ />
      </ContentTemplate>
    </asp:UpdatePanel>


2)in un pannello amministrativo, in una masterpage, ho un semplice menù statico fatto in aspx che, se ho il routing attivato viene visualizzato tutto scomposto, altrimenti funziona regolarmente:
<asp:Menu ID="MenuAdmin" runat="server" BackColor="#E3EAEB" DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="11px" ForeColor="#666666" Orientation="Horizontal" StaticSubMenuIndent="10px" Width="922px">
            <DynamicHoverStyle BackColor="#666666" ForeColor="White" />
            <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
            <DynamicMenuStyle BackColor="#E3EAEB" />
            <DynamicSelectedStyle BackColor="#1C5E55" />
            <Items>
                <asp:MenuItem> ........  </asp:MenuItem>
                <asp:MenuItem> ........  </asp:MenuItem>
                ......................................
            </Items>
            <StaticHoverStyle BackColor="#666666" ForeColor="White" />
            <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
            <StaticSelectedStyle BackColor="#1C5E55" />
        </asp:Menu>




Suppongo sia un qualche tipo di incompatibilità con asp.net.... devo forse gestire qualcosa al page load delle pagine?
Qualche consiglio su cosa verificare?
Magari è il css o qualche immagine che non viene inclusa con la tilde ~ e quindi il percorso risulta non corretto? Servirebbero maggiori info

Ormai programmano tutti... ma la professionalità appartiene a pochi
19 messaggi dal 17 febbraio 2013
Non ci sono css e comunque non mi sembra sia un problema di puntamento a file... se disabilito il Routing degli url funziona bene sia il menù (che ribadisco è un normale menù statico asp.net), sia l' adrotator.
magari hai degli url relativi e il fatto di avere l'url routing ti cambia il numero di segmenti nel path...

Ormai programmano tutti... ma la professionalità appartiene a pochi
19 messaggi dal 17 febbraio 2013
manuel0081 ha scritto:
magari hai degli url relativi e il fatto di avere l'url routing ti cambia il numero di segmenti nel path...



si, il problema era qualcosa di smile...
l'ho risolto mettendo nelle pagine aspx:
<base id="baseControl" runat="server" />


e nel code behind:
protected void Page_Init(object sender, EventArgs e)
    {
        baseControl.Attributes.Add("href", Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/"));
    }


La cosa strana è che adesso il banner ed il menù funzionano bene, ma utilizzando InternetExplorer mi sbaglia il puntamento alle immagini ed ai link... con gli altri browser (firefox e chrome) la pagina gira bene.
Ho il problema solo con ie :(

EDIT: comunque si, il routing, per la pagina dove ho il problema, aggiunge un segmento nel path...
EDIT2: ho notato anche un altro problema: nella pagine gestite con routing non funziona un controllo MSCaptcha (che inaltre pagine funziona).
Inizialmente non mi visualizzava l'immagine del captcha, ma ho risolto mettendo questo codice nel global.asax
void Application_Start(object sender, EventArgs e) 
    {
        ........
        RouteTable.Routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
    }

Adesso l'immagine viene visualizzata, ma fallisce sempre il controllo del codice digitato (nelle pagine non gestite dal routing funziona bene)
Modificato da Yield79 il 23 novembre 2014 15.45 -
Suggerirei allora di eliminare l'hack e trovare una soluzione più standard. Puoi postare un po' di codice ristretto al problema? Magari una pagina nuova dove il problema si verifica

Ormai programmano tutti... ma la professionalità appartiene a pochi
19 messaggi dal 17 febbraio 2013
ok, faccio una panoramica sul codice per gestire il routing...

nel web.config ho aggiunto il routing:
<system.webServer>
<modules>
      .......
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </modules>
<handlers>
      .......
      <!--CAPTCHA-->
      <add name="MSCaptcha" verb="GET" path="CaptchaImage.axd" type="MSCaptcha.CaptchaImageHandler, MSCaptcha"/>
      <!--ROUTING-->
      <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </handlers>




 <system.web>
    <compilation debug="true">
      <assemblies>
        ...............
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
<httpModules>
      
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>



nel global.asax:
void Application_Start(object sender, EventArgs e) 
    {
        // Codice eseguito all'avvio dell'applicazione
        RegisterRoutes(RouteTable.Routes);
        RouteTable.Routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
    }


 void RegisterRoutes(RouteCollection routes)
    {
        // Routing Agenzie
        routes.Add("Agenzie",new Route("agenzia/{AgenziaName}", new AgenzieRouteHandler()));
    }




in AppCode\AgenzieRouteHandler.cs:
public class AgenzieRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        string agenziaName = requestContext.RouteData.Values["AgenziaName"] as string;

        if (string.IsNullOrEmpty(agenziaName))
            return Utility.GetNotFoundHttpHandler();
        else
        {

            ...........codice che estrae dal database l'id_agenzia.........

            //verifico se ho trovato un id
            if (!id_agenzia.Equals(string.Empty))
            {
                HttpContext.Current.Items["id_agenzia"] = id_agenzia;
                return BuildManager.CreateInstanceFromVirtualPath("~/agenzia.aspx", typeof(Page)) as Page;
            }
            else
            {
                return Utility.GetNotFoundHttpHandler();
            }
        }
    }



come detto nel global.asax, il routing aggiunge un segmento "agenzia" alla path della pagina
"agenzia/{AgenziaName}"

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.