1

ajax を介して一部のデータをレンダリングするために使用される Web サービスを含む asp.net 4.0 アプリケーションがあります。スクリプト参照を介してスクリプトマネージャーにサービスを接続しています。私のサイトはフォーム認証によって保護されています。

<ajaxtoolkit:toolkitscriptmanager id="ScriptManager1" runat="server" enableviewstate="false"
            asyncpostbacktimeout="3600" scriptmode="Auto" enablepagemethods="true" CombineScripts="true" EnableCdn="true" >
            <Services>
                <asp:ServiceReference Path="~/WebServices/PortalWebService.asmx" />
            </Services>
        </ajaxtoolkit:toolkitscriptmanager>

javascript を使用して webservice メソッドを呼び出そうとすると、認証チケットがまだ有効で、すべてがうまく機能せず、応答が完全に正常に返されます。しかし、JavaScript 呼び出しが行われたときに認証チケットの有効期限が切れている場合、サーバーは認証を求めるウィンドウをポップアップ表示します。

サーバーは基本認証の 401 要求で応答しています! 有効な情報を入力すると、ウィンドウが再びポップアップするだけで何もしません。

すべきではないときに基本認証を要求する

サービス メソッドの呼び出しに on エラー ハンドラーを追加しました。ユーザーがウィンドウを表示するように求められた後、このハンドラーが起動されます。これを修正するにはどうすればよいですか? エラーを onerror ハンドラに報告するか、ユーザーをリダイレクトする必要があります (これは起こりそうにありません)。

4

1 に答える 1

0

IIS で基本認証とダイジェスト認証を無効にすることで修正しました (フォーム認証は既に有効になっていました)。これを行うと、正しい動作でフォーム認証が使用されました。

于 2013-08-22T14:29:07.367 に答える