8

(詳細については、以下の質問を参照してください):

状況はありますか

<machineKey
      validationKey="AutoGenerate,IsolateApps"
      decryptionKey="AutoGenerate,IsolateApps"/>

web.config では、アプリケーション プールのリサイクル時に新しい machineKey を自動生成できませんか? これは私が見ている動作です...


MVC アプリで標準の ASP.NET FormsAuthentication を使用しています。パーシスタント Cookie を使用してユーザーをログインさせた場合FormsAuthentication.GetAuthCookie(承認された状態を記憶するためにブラウザーのセッションに依存している)、IIS アプリケーション プールをリサイクルすると、この Cookie に関するセッションの知識が無効になると予想されます。したがって、ログアウトします。永続的な Cookie を持っていないすべてのユーザー。

これは、私の IIS インストール (XP) の 1 つで発生しますが、別の IIS 構成 (サーバー 2K3) では、FormsAuthentication Cookie (標準名「.ASPXAUTH」の下) は有効なままであり、ユーザーの認証を続けます。

なぜこれが起こっているのか、またはこの動作を制御する構成を知っている人はいますか?

明らかに、アプリ プールをリサイクルしても、ブラウザーがまだ .ASPXAUTH Cookie を送信するかどうかを制御することはできません (ブラウザーを閉じておらず、Cookie の有効期限が切れていない限り)。

リサイクル後に認証を適切に拒否する IIS インストールの場合Request.Cookies、イベント中に入ってくる Cookie を確認できますApplication_BeginRequestが、制御が Global.asax.cs で利用可能な次のイベントに移動すると(Application_AuthenticateRequest、Cookie は削除されます。Request.Cookiesコレクションから

これが IIS/ASP.NET 構成の両方で発生しないのはなぜですか?


これが明確でない場合、質問を形成するより簡単な方法は次のとおりです。

単一のリクエストで から にステップすると、 から null に変わるHttpContext.Current.Request.Cookies[".ASPXAUTH"]のはなぜですか?{System.Web.HttpCookie}Application_BeginRequestApplication_AuthenticateRequest


その他のデバッグ情報:

次のコードを Global.asax.cs の FormsAuthentication_OnAuthenticate イベントに添付すると...

var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
    var val = cookie.Value;
    try
    {
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(val);
    }
    catch (Exception)
    {
    }
}

...その後、IIS アプリケーション プールをリサイクルするの要求中に、例外はキャッチされません。IIS アプリケーション プールをリサイクルした後、まったく同じ .ASPXAUTH Cookie がブラウザーから送信されると、暗号化例外がキャッチされます (「パディングが無効であり、削除できません。」)

どうしてこれなの?


ASP.NET サーバー コントロール - Web 参照で型/オブジェクトを再利用する

ASP.NET サーバー コントロールの Web 参照でオブジェクトを再利用できるかどうか疑問に思っていました。(基本的に同じ Web 参照名を維持します)

同じ Web 参照名でグループ化したい Web サービス (.asmx) がいくつかありますが、同じ名前を使用してそれらを使用すると、最後とすべてのオブジェクト名に 1 が追加されます。

右クリック - Web 参照の追加 asmx の URL を入力 Web 参照名に「MyServices」と入力

同じオブジェクトをグループ化して再利用するのではなく、「MyServices1」として追加します。

これは、ASP.NET サーバー コントロールでのみこれを行うように見えます。これまでに作成した他のプロジェクト、標準の c# コンソール アプリケーション、asp.net Web アプリケーションはすべて、オブジェクトと Web 参照名をグループ化します。

パッチやアップグレードが不足していますか、それとも Server Control では不可能なのでしょうか?

ちょっとした背景として、単一の dll に基づいてプロジェクトにドロップできるコントロールを作成しています。

テスト プロジェクトが Web アプリケーションの場合、サービスをグループ化できますが、サーバー コントロール プロジェクトではグループ化されません。

どんな助けでも大歓迎です!

ありがとう!

ジェイミー

例は次の場所にあります。

http://imgur.com/6tqvQ.jpg

4

3 に答える 3

-2

フォーム認証Cookieは、セッションの状態とは何の関係もありません。

于 2009-07-10T14:16:00.523 に答える