34

vs 2010を使用してc#でAsp.net MVC 2アプリに取り組んでいます。デバッグモードでローカルにアプリを実行すると、以下のエラーが発生します。

エラーメッセージの画像は以下のとおりです。

ここに画像の説明を入力してください

エラーメッセージのテキストは次のとおりです。

セッション状態は、構成ファイルまたはPageディレクティブのいずれかでenableSessionStateがtrueに設定されている場合にのみ使用できます。また、System.Web.SessionStateModuleまたはカスタムセッション状態モジュールが<configuration>\<system.web>\<httpModules> アプリケーション構成のセクションに含まれていることを確認してください。

この問題を解決するために私がしたことは次のとおりです。

1を試してください:web.configファイルが次のように変更されました:

<system.webServer>
       <modules runAllManagedModulesForAllRequests="true">
        <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

試してみてください2は以下の通りです:

ここに画像の説明を入力してください

しかし残念ながら、それでも私は上記と同じ問題を抱えています。

アップデート

ここに画像の説明を入力してください

これに対する解決策はありますか?

4

13 に答える 13

40

セクションでもセッション状態を有効にしましたか?

 <system.web>
      <pages enableSessionState="true" /> 
 </system.web>

または、これをページに追加しましたか?

 <%@Page enableSessionState="true"> 

ASP.NET Session State Manager Serviceまた、サービスが実行されていることを確認しましたか?あなたのスクリーンショットではそうではありません。起動モードに設定されてManualおり、使用するたびに起動する必要があります。サービスを開始するには、サービスを強調表示して、ツールバーの緑色の再生ボタンをクリックします。自動的に起動するには、プロパティを編集し、スタートアップの種類を調整します。

または、SessionStateのmodeプロパティをInProcに設定して、状態サービスが不要になるようにします。

 <system.web>
      <sessionState mode="InProc" />
 </system.web>

ASP.NETセッション状態でのデータの保存に関して使用できるすべてのオプションについては、MSDNを確認してください。


注:コントローラーにセッションから値をフェッチさせ、ページ/コントロールのモデル(またはViewBag)に値を追加させることをお勧めします。そうすれば、ビューはHttpSessionに依存せず、選択できます。最小限のコード変更で、後でこのアイテムの別のソース。または、さらに良いことに、セッション状態をまったく使用しないでください。多くの非同期JavaScript呼び出しを使用している場合、パフォーマンスが低下する可能性があります。

于 2013-01-15T09:47:04.880 に答える
14

また、SharePoint を実行していてこのエラーが発生した場合は、実行することを忘れないでください

Enable-SPSessionStateService -DefaultProvision

そうしないと、引き続き上記のエラー メッセージが表示されます。

于 2013-01-23T23:52:22.457 に答える
7

実際jessehouwingに通常のシナリオの解決策を提供しました。

しかし、私の場合、私は2種類のセッションを有効にしましたweb.config file

下のようなものです。

最初の1つ :

<modules runAllManagedModulesForAllRequests="true">
        <remove name="Session" />
        <add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>

二つ目 :

<sessionState mode="Custom" customProvider="DefaultSessionProvider">
            <providers>
                <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PawLoyalty" applicationName="PawLoyalty"/>
            </providers>
 </sessionState>

だから私の場合、私は2番目のものにコメントしなければなりません.B'cosは生産のためのものです.2番目のものをコメントアウトしたとき、私の問題は消えました.

于 2013-01-15T14:23:49.290 に答える
5

私の場合、HttpContext.Current.Session代わりに使用するだけで問題は解決しましたSession

于 2014-05-02T21:40:29.470 に答える
2

受け入れられた答えがあることは承知していますが、これは人々を助けるかもしれません。IIS Express 8 を使用して Visual Studio 2012 で実行すると、NET 3.5 フレームワークを使用する ASP.NET サイトで同様の問題が発生することがわかりました。上記のソリューションをすべて試しましたが、どれも機能しませんでした。組み込みのVS 2012 Webサーバーが機能しました。理由はわかりませんが、3.5 フレームワークと IIS 8 の間のリンクであったと思われます。

于 2013-06-27T09:28:01.643 に答える
1

指定されたパスの下からの回答に続いて、うまくいきました。

完全に機能するソリューションを見つけました!以下を web.config に追加します。

<system.webServer>
<modules>
<!-- UrlRewriter code here -->
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
</modules>
</system.webServer>

これが他の誰かに役立つことを願っています!

于 2014-02-13T07:42:05.327 に答える
0
  1. Skype が 80 ポートでリクエストを傍受している可能性があります。Skype オプションでチェックを外します
  2. または、プロキシがない場合、IE でプロキシの接続がチェックされています
  3. または、フィドラーがインターセプトしてプロキシとして機能する可能性があります。チェックを外してください!

上記の問題を解決し、私のものを解決しました!

ハイドテック

于 2013-08-26T16:35:19.323 に答える
0

Web.Config に次のものがある場合、セッション状態が壊れている可能性があります。

<httpModules>
  <clear/>
</httpModules>

このような場合は、そのセクションをコメント アウトすることをお勧めします。これにより、この問題を修正するために他の変更を行う必要がなくなります。

于 2015-11-12T10:44:05.410 に答える