0

私の ASP.NET サイトがモバイル デバイスから参照されると、FormsAuthentication.CookiesSupported プロパティが明確な理由なしに false を返すことがあります。たとえば、モバイル Safari で ASP.NET ログイン ページを開くと、FormsAuthentication.CookiesSupported が true になります。非アクティブな状態がしばらく続いた後、このページを更新すると、FormsAuthentication.CookiesSupported が false になりました。現時点では、モバイル Chrome または Dolphin で同じページを開きますが、CookiesSupported はすべて false です。次に、IIS を再起動すると、すべてのブラウザーで CookiesSupported が再び true になる場合もあれば、まだ false になる場合もあります。繰り返しますが、しばらくするとそれが真実になるかもしれません。Cookie のサポートは、すべてのブラウザー構成で常にオンになっています。

CookiesSupported が false の場合に FormsAuthentication.SetAuthCookie 関数を呼び出すと、ASP.NET は認証チケットに URI を使用します。私はそれを受け入れることができますが、変更された URI は別の問題を引き起こします。問題は、WebResource.axd が機能しなくなることです。asp:LinkBut​​ton は、レンダリング時に、認証 Cookie が URI に追加されている場合に定義されていない WebForm_DoPostBackWithOptions を呼び出します。

基本的に、私は2つの質問があります:

  1. FormsAuthentication.CookiesSupported がモバイル ブラウザー (Safari、Chrome、Dolphin) で断続的に false を返すのはなぜですか? また、これを修正するにはどうすればよいですか?

  2. 認証 Cookie が URI に挿入されると WebResource.axd が機能しなくなるのはなぜですか?

4

2 に答える 2

1

これは、asp.net のブラウザ機能に関連する問題のようです。ユーザー エージェント文字列を使用してブラウザーを識別し、それを照合して機能を判断します。このフレームワークには、ios やその他の新しいモバイル ベースのブラウザーに関する十分な情報がありません。これは ASP.Net v4.5 で修正されたと思います。

一方、この回避策を使用して、すべての (汎用) ブラウザーが Cookie をサポートしていることを ASP.Net に伝えることができます。

プロジェクト " " に特別なフォルダを追加してくださいApp_Browsers。このフォルダ内に " generic.browser" という名前のファイルを作成します。このファイルに次のテキストを貼り付けます。

<browsers>
    <browser refID="Mozilla">
        <capabilities>
            <capability name="xml" value="true" />
            <capability name="cookies" value="true" />
        </capabilities>
    </browser>
</browsers>
于 2013-07-19T12:04:17.170 に答える