2010-05-03 29 views
5

Después del despliegue de mi página web a IIS, estoy recibiendo el mensaje de error al intentar acceder a una sesión:error utilizando la sesión en IIS 7

estado de sesión sólo se puede utilizar cuando enableSessionState se establece en verdadero, ya sea en un archivo de configuración o en Directiva de página. Por favor, también hacen seguro de que System.Web.SessionStateModule o un módulo de estado de sesión costumbre es incluido en la sección \\ en la configuración de la aplicación .

Acceder a él en Page_Load o PreRender eventos (probé ambas versiones). Con Visual Studio Dev Server, funciona sin problemas. Intenté tanto InProc como SessionState almacenamiento, 1 y múltiples procesos de trabajo. Agregué un enableSessionState = "true" a mi página web explícitamente. aquí es parte de web.config:

<system.web> 
    <globalization culture="ru-RU" uiCulture="ru-RU" /> 
    <compilation debug="true" defaultLanguage="c#"> 
     <assemblies> 
      <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
      <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    <pages enableEventValidation="false" enableSessionState="true"> 
     <controls> 
      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </controls> 
    </pages> 
    <httpHandlers> 
     <remove verb="*" path="*.asmx" /> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> 
    </httpHandlers> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add name="SearchUrlRewriter" type="Synonymizer.SearchUrlRewriter, Synonymizer, Version=1.0.0.0, Culture=neutral" /> 
     <add name="Session" type="System.Web.SessionStateModule" /> 
    </httpModules> 
    <sessionState cookieless="UseCookies" cookieName="My_SessionId" mode="InProc" stateNetworkTimeout="5" /> 
    <customErrors mode="Off" /> 
</system.web> 

¿Qué más tengo que hacer para que funcione?

He intentado controlar si IIS tiene acceso a la carpeta aspnet_client con Process Monitor y no obtuvo ningún acceso.

+0

¿Alguna vez resolvió esto con éxito? ¿Aún necesitas ayuda con esto? – jcolebrand

Respuesta

9

La solución pasó a sé muy curioso. Aunque IIS7 jn Windows 2008R2 en la descripción del error dice agregar SessionStateModule a system.web sección, se debe agregar a system.webServer sección.

<system.webServer> 
    <modules> 
     <remove name="Session" /> 
     <add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </modules> 
</system.webServer> 
+1

debe marcar esto como la respuesta. –

+0

Este ejemplo solucionó mi problema, pero no entiendo por qué debería agregar el módulo .net versión 2.0? Mi aplicación es crear en .NET 4 –

0

Las sesiones deberían funcionar en una aplicación simple y vacía. Es decir, todos los valores predeterminados deberían funcionar.

Si no funciona con aplicaciones de prueba básicas, es posible que IIS se haya confundido con su aplicación.

Intente eliminar su aplicación IIS. Luego, cree un nuevo directorio virtual, reinicie IIS y luego vuelva a agregar su aplicación.

Además, revise la configuración ASP.Net de su aplicación. Asegúrese de que esté configurado en la versión correcta de ASP.Net.

Durante la búsqueda, que también tuvo ...

http://ramonaeid.spaces.live.com/blog/cns!A77704F1DB999BB0!181.entry

Espero que ayude.

0

Asegúrese de que los nombres de servicio "ASP.NET State Service" se estén ejecutando y luego agréguelos a su web.config.

<sessionState mode="InProc" server="127.0.0.1" port="42424" ... > 

Referencia:

http://msdn.microsoft.com/en-us/library/ms972429.aspx
http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx

Comentario:
Tal vez es mejor al cambio manual de puerto a otra cosa. Esto se puede hacer con regedit.

HKLM \ Syste \ CurrentControlSet \ Services \ aspnet_state \ parámetros \ Port -> 42424

Algunos más infos:

http://msdn.microsoft.com/en-us/library/ff648667.aspx

0

tiene esta determinado servidor sido utilizados para cualquier otra cosa ? ¿Es un servidor de Windows 2008 e IIS7?

Estoy dispuesto a apostar que faltan algunas funciones de servidor para IIS, las ha verificado haciendo clic derecho en "Equipo", eligiendo "Administrar", yendo a la administración de roles (está en el árbol primario en la computadora administrador) y comprobar los bits instalados para IIS?

Si esto es IIS6, es posible que tenga otras inquietudes. Pero creo que comenzaremos con algo simple, a ver si no podemos ayudarlo a resolver esto.

0

¿Cuál es su estructura de carpetas? ¿Tiene configuraciones web en una carpeta superior que pueden haber deshabilitado esto explícitamente?

Si es posible, vuelva a registrar asp.net

Open Control Panel 
    Programs\Turn Windows Features on or off 
    Internet Information Services 
     World Wide Web Services 
     Application development Features 
      ASP.Net <-- check mark here 

ref: How to register ASP.NET 2.0 to web server(IIS7)?

0

Trate de añadir páginas en la sección de web.config la siguiente sección:

<namespaces> 
    <add namespace="System.Web.SessionState" /> 
<namespaces/> 
Cuestiones relacionadas