views:

429

answers:

7

After deployment of my website to IIS I'm getting a following error message when trying to access session:

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the \\ section in the application configuration.

I access it in Page_Load or PreRender events (I tried both versions). With VS Dev Server it works without a problem. I tried both InProc an SessionState storage, 1 and multiple woker processes. I added a enableSessionState = "true" to my webpage explicitly. Here is part of 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>

What else do I need to do to make it work??

UPD I tried to monitor if IIS accesses aspnet_client folder with ProcMon and didn't get any access.

A: 

Sessions should work on a plain, empty application. That is, all the default values should work.

If it's not working with basic test applications, then IIS may have got confused with your application.

Try deleting your IIS application. Then create a new virtual directory, restart IIS, and then add your application again.

Also, double check your application's ASP.Net settings. Make sure it's set to the correct version of ASP.Net.

While searching, I also ran into...

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

Hope that helps.

kervin
A: 

The session state can be disabled in IIS configuration. Are you sure your IIS WebApp configuration allow session state ?

http://technet.microsoft.com/en-us/library/cc754450%28WS.10%29.aspx

JoeBilly
A: 

Make sure that the service names "ASP.NET State Service" is running and then add this to your web.config.

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

Reference:

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

Comment:
Maybe is better to manual change the port to something else. This can be done with regedit.

HKLM\Syste\CurrentControlSet\Services\aspnet_state\Parametres\Port -> 42424

Some more infos:

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

Aristos
A: 

Has this particular server been used for anything else? Is it a Windows 2008 server and IIS7?

I'm willing to bet that you're missing some server roles for IIS, have you checked those by right clicking "Computer", choosing "Manage", going to the roles management (it's on the primary tree in computer manager) and checking the installed bits for IIS?

If this is IIS6 then you may have other concerns. But I figure we'll start with something simple, see if we can't help you figure this one out.

drachenstern
A: 

What is your folder structure. Do you have web configs at a higher folder that may have explicitly disabled this?

If possible, reregister 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: http://stackoverflow.com/questions/647598/how-to-register-asp-net-2-0-to-web-serveriis7

Raj Kaimal
A: 

Try adding in pages section in web.config the following section:

<namespaces> 
   <add namespace="System.Web.SessionState" />
<namespaces/>
Teddy
A: 

The solution happened to be very curious. Though IIS7 jn WIndows 2008R2 in error description says to add SessionStateModule to system.web section, it should be added to system.webServer section.

<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>
flashnik