AppHarbor でホストされており、memcacher アドオンを使用して、ドキュメントに記載されているようにセットアップします。
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom"
customProvider="MemcachedSessionProvider" xdt:Transform="Insert">
<providers>
<add name="MemcachedSessionProvider"
type="MemcachedProviders.Session.SessionStateProvider,MemcachedProviders"
dbType="none" />
</providers>
</sessionState>
次の方法でのみ再現できる問題が発生しています。
- iOS Safari (または Twitter iPhone アプリの組み込み Webkit ブラウザー) 内の appfail.net への Twitter 短縮 URL: http://t.co/6tRXopEJ
- [Run Demo] ボタンをクリックすると、デモ アカウントでユーザーが自動的にサインインします。
At this point the server issues a 302 redirect to an invalid URL, eg: http://appfail.net/(F(FckQ4UX0zD_WSxk_adpkk3YysHsYQS4TSVpljxmswyBqEAZ1q-YhW4KePrpYQfJ4KlLGaiyje_TbpeSARVyI8LioQ7Jp5EIc0Zm9u99IqRRkkoMh_wr-jrsrvje4J7KpUt1n87xEMzMeqHzpMz9ksm42IqNnf3F9B6GBwrnuA5EY_YsV0))/Applications
URL には、IIS が Cookie なしのセッションに使用するのと同じ形式の SessionID が含まれているようです。IISはUserAgentに基づいてセッションレスCookieを使用するように構成できるため、これも理にかなっています-したがって、なぜモバイルサファリでのみ再現するのですか(ただし、なぜt.co/リダイレクトでのみ発生し、いつ発生しないのかはわかりません)ページを直接ロードする)
奇妙なことに、Cookie を使用しないセッションがオフになっています。上記のセッション状態でわかるように。また、「cookieless="UseCookies"」という設定でこれを試しました...運が悪いです!
ロギングを追加し、実行中にシステムが「UseCookies」として構成されていることを確認しました。
では、RedirectToAction() を使用するだけで、どうすればユーザーを Cookie のない URL にリダイレクトできるのでしょうか?
これがカスタム セッション状態プロバイダー (MemcachedProvider) に関連している可能性があるかどうか疑問に思っています。それとももっと基本的なものですか?
ありがとうサム