0

認証にWebmatrixを使用するASP.NetMVC4アプリに取り組んでいます。web.configファイルに次のものがあります

<sessionState mode="SQLServer" cookieless="true" allowCustomSqlDatabase="true"
     sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist
                          Security Info=True;User ID=user;Password=password" 
     timeout="2880" sqlCommandTimeout="10" />

ASPStateデータベースにデータが入力されていることはわかりますが、URLでセッションIDを取得しています。Chrome経由でアクセスしようとすると、多くのリダイレクトに対してエラーが発生します。IE経由でアクセスすると、リダイレクトが表示されても(セッションIDはURLに含まれていますが)機能しますが、ログインしようとするとエラーが発生し、次のエラーが発生します。

セッション状態をシリアル化できません。「StateServer」および「SQLServer」モードでは、ASP.NETはセッション状態オブジェクトをシリアル化します。その結果、シリアル化できないオブジェクトまたはMarshalByRefオブジェクトは許可されません。「カスタム」モードのカスタムセッション状態ストアによって同様のシリアル化が行われる場合も、同じ制限が適用されます。

Webmatrixをカスタマイズしていませんが、すべてデフォルトです。URLから離れて、web.configファイルに設定されているようにDBを使用するためにセッションIDが必要です

4

1 に答える 1

2

まず、cookielessをfalseに設定してみてください。次に、ASPStateを使用する場合はallowCustomSqlDatabaseをfalseに設定する必要があります。また、接続文字列で初期カタログを指定しないでください。SQLStateはバックグラウンドで自動的にそれを行います。第4に、シリアル化しようとしているのは何なのかわかりませんが[Serializable]、セッションに格納しようとしているクラスの上に属性を配置する必要があります。

URL文字列のセッションIDについては、IISまたはIIS Expressを使用していますか?IISは、小さなユーティリティaspnet_filter.exeを使用してセッションIDを持つURLを受け入れ、内部的に適切なアドレスにリダイレクトします。それがあなたに情報を返すときも同じです。URLは再び装飾のプロセスを通過します。ただし、IISExpressがそのユーティリティを使用しているかどうかはわかりません。ある意味では、開発者のマシンでCookieをオフにすることはあまり意味がありません。

于 2012-12-22T07:55:07.740 に答える