1

仮想サーバーで共有されている 2 つの asp.net Web フォーム アプリケーションがあります。すべてがうまく機能していました。別のベンダーの同じ仕様の新しい仮想サーバーに移行する必要がありました。

最初の Web フォーム アプリケーションはうまく機能します。

問題は、2 番目の Web フォーム アプリケーションがユーザーの認証を許可しないことです。asp.net フォーム ベースの認証を使用しています。何らかの理由で、フォーム認証チケットを発行していません。開発環境でプロジェクトを再実行したところ、認証はうまく機能しました。

IIS が正しく構成されていないのか、それとも他の何かが正しく設定されていないのかはわかりません。新しいサーバーと古いサーバーをトリプル チェックしましたが、IIS の設定はすべて同一のようです。asp.net 4.0 を使用しており、IIS ホスト ヘッダーを使用して 2 つのサイト間の要求を区別しています。

数時間のテストと調査の結果、実稼働サーバーの 2 番目の Web サイトは Internet Explorer 9 と 10 でのみユーザー認証に失敗するという結論に達しました。他のすべてのブラウザーは正常に動作します。IE9 または 10 の互換モードで Web サイトを実行すると、それも機能します。

コードでフォーム認証チケットを発行する方法は次のとおりです。

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                1, //Ticket Version
                "", //Associated User Name
                DateTime.Now, //Date/Time Issued
                DateTime.Now.AddMinutes(60), //Time to expire
                false, //Persistent Cookie
                user_id, //User-Data --- User Role
                FormsAuthentication.FormsCookiePath); // Cookie Path

        string hash = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

        if (ticket.IsPersistent)
        {
            cookie.Expires = ticket.Expiration;
        }


    //Add cookie to the list
    Response.Cookies.Add(cookie);

Web.Config ファイルでの認証設定は次のとおりです。

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" protection="All" timeout="90" path="/" name=".survey" requireSSL="false" slidingExpiration="true" defaultUrl="survey.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
<authorization>
  <deny users="?"/>
  <allow roles="Standard, Admin"/>
</authorization>

これが他のことです。最初の Web フォーム アプリケーション (動作するアプリケーション) は、同じ基本認証コードを使用します。すべてのブラウザでうまく機能します。2 つのアプリケーションの認証の唯一の違いは、最初のアプリケーション (動作するアプリケーション) が SSL を必要とすることです。

これは、私が今まで遭遇した中で最もユニークなエラーです。何かアドバイスがあれば教えてください。また、詳しい情報を提供できる場合もお知らせください。

ご協力いただきありがとうございます。

4

1 に答える 1

0

サーバーに .Net の最新のパッチがあることを確認してください。IE のバージョンに関して以前にこの問題が発生したことがありますが、パッチを適用すると機能し始めました。

于 2013-06-15T03:27:37.023 に答える