1

asp.net認証とSQLServersessionStateモードを使用して実行しているアプリケーションがあります。何らかの理由で、セッションが環境の1つを期限切れにすることはないようです。

これは、web.configファイルからの抜粋です。

<sessionState mode="SQLServer" timeout="1" allowCustomSqlDatabase="true" partitionResolverType="Microsoft.Office.Server.Administration.SqlSessionStateResolver, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" sessionIDManagerType="Lanap.BotDetect.Persistence.CustomSessionIDManager, Lanap.BotDetect, Version=2.0.15.0, Culture=neutral, PublicKeyToken=74616036388b765f" />

ご覧のとおり、アプリケーションは負荷分散されたMOSS2007インスタンスでホストされているため、sessionStateDB用のカスタムSQLパラメーターがあります。

私のSOの調査から、これに関する最も一般的な問題は、SQL Serverエージェントが無効になっているか、SQLServerエージェントジョブが見つからないか実行されていないことのようです。ここではそうではないことを私は確信しています。セッションをホストするASPStateTempSessionsテーブルに移動し、その動作が一貫していることを確認しました。Webサイトにログインすると、セッションIDで行が作成され、1〜2分後に破棄されます(セッションの有効期限が切れます)。ただし、その後Webサイトに戻って更新すると、ログアウトする代わりにログインしたままになります。次にASPStateTempSessionsテーブルに再度移動すると、同じセッションIDで新しい行が作成されます。

私の知る限り、セッションIDは数週間存続します...ブラウザがある場所でコンピュータを再起動しても何も変わりません。クッキーをクリアすることはできます。明らかに、ブラウザのCookieがサーバーでのセッションの再作成をトリガーしています。

また、私はクッキーレスモードで実行していないことを確信しています。まず、ブラウザでCookieを確認できます。また、アクセス先のURLにsessionIdが含まれていません(Cookieなしのセッションを実行しているかどうかを判断するための識別基準であることがわかりました)。

私にはいくつかの環境があります。1つは機能しています(ライブサーバー)、もう1つは機能していません(デモサーバー)。両方のweb.configファイルを比較する場合、何かを意味する可能性が最も高い違いは次のとおりです。

ライブサーバー:

<authentication mode="Forms">
  <forms loginUrl="/_layouts/ClientPortal/login.aspx" />
</authentication>

デモサーバー:

<authentication mode="Forms">
  <forms loginUrl="/_layouts/ClientPortal/login.aspx" name=".ASPXAUTH" domain=".shlsolutions.net" protection="All" path="/" timeout="2880" />
</authentication>

この違いの理由は、アプリケーションがデモ環境でクロスドメイン認証を使用できる必要があるためです。

web.configファイルで何かを変更する必要があることは確かですが、実際には何がわかりません。それを手伝ってくれませんか。

編集:クッキーのコピー/貼り付け

.ASPXAUTH=BDEBD7975B717219A24D8D2FB22ADF523F4E63C9619B758A9F500CC2C9967156A9CFDB057A2DFC4DF9157A1D6E0F6EA3FBBA90C3D566FEB9E7F63AA4DBBDF68A32A5518175F6073E81677069C8205D9433306DCE331921237189DEECE59B6C7494EA6369C6D1BEAE544E83295D942DCE856718C5B095D695DB42D68BF75991A5EE37246E37B96F1675547E87338B89FE669EFD2A5AB38A15F7926025791F8FC17A02882B; path=/; domain=.shlsolutions.net
ASP.NET_SessionId=pa5v0f2mnc20jybxq4bmbr20; path=/; domain=uat.central.shlsolutions.net; HttpOnly
.ASPXAUTH=D3DCB91EA8705E7350AB2BEDBDC79F37C87CB391AFF81A9F07CAE72DB7BDBFA2AA62B1EF538C7EF77C7874D84A09DCDADF186884190B9BEDA56E73E9A1EED1948A6C75E618D4FD7AA9344C234B6472E3BEEC088911112877E7A77A6E2B27CA8EF69BE20B38591EDB9706225FA9831890B1C4684B3D9075153CB22CC37140F8C05811C44853DC3E7278740B7BBDC55627E801D81ED8EE8ABC07AA8CFF1F3F59EED9606ABB; path=/; domain=uat.central.shlsolutions.net; HttpOnly
__utma=164265915.107905765.1350568100.1350661280.1350898679.7; expires=Wed, 22 Oct 2014 09:37:58 GMT; path=/; domain=.uat.central.shlsolutions.net
__utmb=164265915.1.10.1350898679; expires=Mon, 22 Oct 2012 10:07:58 GMT; path=/; domain=.uat.central.shlsolutions.net
__utmc=164265915; path=/; domain=.uat.central.shlsolutions.net
__utmz=164265915.1350568100.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); expires=Mon, 22 Apr 2013 21:37:58 GMT; path=/; domain=.uat.central.shlsolutions.net
4

2 に答える 2

0

web.configを見ると、カスタムセッションIDマネージャーがあるように見えます。ドキュメント:http ://captcha.biz/doc/aspnet/api/captcha-web-reference.html#BotDetect.Web.CustomSessionIdManager 発生する動作は、このカスタムセッションIDマネージャーの動作が原因である可能性があります。このDLLはキャプチャに使用されますが、web.configから取り出して、状況が改善するかどうかを確認するオプションですか?

于 2012-10-23T09:09:00.567 に答える
0

ASP.Net セッション状態は、デフォルトで、セッションが作成されたクライアントから 60 分間連絡がない場合、セッション状態オブジェクトを期限切れにするスライド有効期限メカニズムを使用します。

SharePoint が ASPStateTempSessions テーブルからこれらのセッション状態レコードをクリーンアップしないという既知の問題があります: http://blogs.msdn.com/b/toddca/archive/2009/03/17/sharepoint-session-state-the- guest-that-just-won-t-leave.aspx

お役に立てれば?

于 2012-10-19T16:26:46.900 に答える