2010-05-03 9 views
5

Nach der Bereitstellung von meiner Website mit IIS, erhalte ich die folgende Fehlermeldung, wenn eine Sitzung zuzugreifen versuchen:Fehlersitzung in IIS 7

Sitzungsstatus kann nur verwendet werden, wenn enableSessionState eingestellt wird true, entweder in einer Konfigurationsdatei oder in die Page-Direktive. Bitte beachten Sie auch machen sicher, dass System.Web.SessionStateModule oder ein benutzerdefinierter Sitzungsstatusmodul im \\ Abschnitt in der Anwendung Konfiguration enthalten ist.

Ich greife darauf in Page_Load oder PreRender Ereignisse (ich habe beide Versionen ausprobiert). Mit Visual Studio Dev Server funktioniert es ohne Probleme. Ich probierte sowohl InProc ein SessionState Speicher, 1 und mehrere Worker-Prozesse. Ich habe meiner Webseite explizit einen enableSessionState = "true" hinzugefügt. Hier ist ein Teil 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> 

Was muss ich tun, damit es funktioniert?

Ich versuchte zu überwachen, wenn IIS auf den Ordner aspnet_client mit Process Monitor zugreifen und keinen Zugriff erhalten.

+0

Haben Sie jemals erfolgreich gelöst? Brauchst du noch Hilfe dabei? – jcolebrand

Antwort

9

Die Lösung passiert sei sehr neugierig. Obwohl IIS7 jn Windows 2008R2 in der Fehlerbeschreibung besagt, dass SessionStateModule dem Abschnitt system.web hinzugefügt werden soll, sollte es zu system.webServer hinzugefügt werden.

<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

sollten Sie dies als die Antwort markieren. –

+0

Dieses Beispiel behebt mein Problem, aber ich verstehe nicht, warum sollte ich .net Version 2.0-Modul hinzufügen? Meine Anwendung wird auf .NET 4 erstellt –

0

Sitzungen sollten an einer einfachen leeren Anwendung funktionieren. Das heißt, alle Standardwerte sollten funktionieren.

Wenn es nicht mit grundlegenden Testanwendungen funktioniert, ist IIS möglicherweise mit Ihrer Anwendung verwechselt worden.

Versuchen Sie, Ihre IIS-Anwendung zu löschen. Erstellen Sie dann ein neues virtuelles Verzeichnis, starten Sie IIS neu und fügen Sie Ihre Anwendung dann erneut hinzu.

Überprüfen Sie auch die ASP.Net-Einstellungen Ihrer Anwendung. Stellen Sie sicher, dass es auf die richtige Version von ASP.Net festgelegt ist.

Während der Suche Ich lief auch in ...

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

Hoffnung, das hilft.

0

Stellen Sie sicher, dass die Dienstnamen "ASP.NET State Service" ausgeführt werden, und fügen Sie diese dann zu Ihrer web.config hinzu.

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

Referenz:

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

Kommentar:
Vielleicht ist besser, manuelle Änderung sonst der Port auf etwas. Dies kann mit regedit gemacht werden.

HKLM \ Syste \ CurrentControlSet \ Services \ aspnet_state \ Die Parameter \ Port- -> 42424

Einige weitere Infos:

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

0

Hat diesen speziellen Server für etwas anderes verwendet worden ? Ist es ein Windows 2008 Server und IIS7?

Ich bin bereit zu wetten, dass Sie einige Serverrollen für IIS vermissen, haben Sie diese überprüft, indem Sie mit der rechten Maustaste auf "Computer", wählen Sie "Verwalten", gehen Sie zum Rollenmanagement (es ist auf dem primären Baum in Computer Manager) und überprüft die installierten Bits für IIS?

Wenn dies IIS6 ist, haben Sie möglicherweise andere Bedenken. Aber ich denke, wir beginnen mit etwas Einfachem, sehen wir, ob wir Ihnen nicht helfen können, dieses herauszufinden.

0

Was ist Ihre Ordnerstruktur? Haben Sie Web-Konfigurationen in einem höheren Ordner, der dies möglicherweise explizit deaktiviert hat?

Wenn möglich, neu registrieren 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

Versuchen in Seiten Abschnitt in web.config Hinzufügen des folgenden Abschnitt:

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