701 messaggi dal 18 febbraio 2002
www.dimsolutions.it
salve a tutti,

utilizzo nelle mie pagine il semplice codice:
if (Session["idUserRegister"] == null)

ma il debug quando arriva alla seguente linea ottengo l'errore:

Lo stato di sessione può essere utilizzato solo se enableSessionState ha valore true, in un file di configurazione o nell'istruzione Page. Accertarsi inoltre che System.Web.SessionStateModule o un modulo di stato sessione personalizzato sia incluso nella sezione <configuration>\<system.web>\<httpModules> della configurazione dell'applicazione

thanks
701 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Un dettaglio che può aiutare a trovare il perchè dell'errore anche se non riesco a capire il nesso.

Il problema si verifica da quando ho implementato il routing nella pagina, ovvero questo codice togliendolo funziona:

GLOBAL ASAX:
-----------------------------
private static void RegisterRoutes()
{
// Regole Routing
//---------------------------------------
System.Web.Routing.RouteTable.Routes.Add(
"content", new System.Web.Routing.Route("content/{description}/{name}",
new ContentRouteHandler("~/page.aspx")));
}


PAGINA PAGE.ASPX:
-----------------------------
public partial class page : System.Web.UI.Page, IContentDisplay
{

public string UniqueName { get; set; }


protected void Page_Load(object sender, System.EventArgs e)
{
// elabora i contenuti
if (UniqueName != null && !UniqueName.Equals(""))
{
string codPagina = Server.HtmlEncode(UniqueName);

if (Extensions.IsInteger(codPagina))
{
riempiPagina(codPagina);
if (Session["idUserRegister"] == null) // ERRORE

}
}

}


public interface IContentDisplay : IHttpHandler
{
string UniqueName { get; set; }
}


public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
if (requestContext.RouteData.Values["name"] != null)
{
var display = BuildManager.CreateInstanceFromVirtualPath(
_virtualPath, typeof(Page)) as IContentDisplay;
if (display != null)
{
display.UniqueName = requestContext.RouteData.Values["name"] as string;
return display;
}
else
{
return null;
}
}
else
{
return null;
}
}
701 messaggi dal 18 febbraio 2002
www.dimsolutions.it
cercando su internet mi sono imbattuto in questo thread:
http://www.hilpers.it/2610974-enablesessionstate-con-urlrewriting

Come da MSDN:
..... If your handler will access session state values, it must implement the
IRequiresSessionState interface (a marker interface with no methods)....

affinchè un HttpHandler possa accedere alla sessione è sufficidnete
implementare IRequiresSessionState, che è solo un interfaccia marker senza
membri.

ho implementato tale interfaccia in questo modo:
public interface IContentDisplay : IHttpHandler, IRequiresSessionState

ma ottengo sempre lo stesso errore! HELP! GRAZIE
diego78 wrote:
ma ottengo sempre lo stesso errore! HELP! GRAZIE

posta la sezione httpmodules del tuo web.config. inoltre, verifica che il session state sia attivo.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
701 messaggi dal 18 febbraio 2002
www.dimsolutions.it
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

Session State va impostato sempre nel web.config?
diego78 wrote:
Session State va impostato sempre nel web.config?

no. il web.confi pare ok, quindi il problema è nel ruote handler. ContentRouteHandler come è fatto?
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
701 messaggi dal 18 febbraio 2002
www.dimsolutions.it
public class ContentRouteHandler : IRouteHandler
{
public ContentRouteHandler()
{

}
public ContentRouteHandler(string virtualPath)
{
_virtualPath = virtualPath;
}

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
if (requestContext.RouteData.Values["name"] != null)
{
var display = BuildManager.CreateInstanceFromVirtualPath(
_virtualPath, typeof(Page)) as IContentDisplay;
if (display != null)
{
display.UniqueName = requestContext.RouteData.Values["name"] as string;
return display;
}
else
{
return null;
}
}
else
{
return null;
}
}

string _virtualPath;
}
diego78 wrote:
public class ContentRouteHandler : IRouteHandler

essendo questo alla fine l'handler, devi implementare l'interfaccia per il supporto per le session anche qui.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.