問題タブ [machinekey]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Azure で実行されているクラウド サービスの machineKey を設定するにはどうすればよいですか?
実行中のインスタンスを 1 つから 3 つに移行して、Azure クラウド サービスのスケールアウト機能をテストしています。クライアント サーバー接続には、Standard_A2 ノード、WorkerRole、および SignalR を使用しています。
これを実行すると、すべての受信 SignalR 接続で 400 "Bad Request" HTTP エラーが返されます。単一のインスタンスに戻すと問題が解消され、クライアントとサーバーのやり取りが再び正常に機能するようになるため、スケーリングが問題の原因であることは間違いありません。エラーは次のとおりです。
これらのエラーの ResponseBody を ( を使用してHttpClientExpection.GetError().ResponseBody
) 調べたところ、「ConnectionId の形式が正しくありません。」が返されることが確認できました。これは、実行中の 3 つのインスタンス間で machineKey が同じでないために問題が発生したことを示しています (たとえば、F5 の背後にある Redis バックプレーンを使用する SignalR - StatusCode: 400、ReasonPhrase: 'Bad Request' を参照)。
次のように、構成ファイル (system.web 内) に machineKey 要素を追加し、再デプロイしました。
サーバーからの応答に変化はありませんでした。も設定してみdecryption="AES"
ました。変化なし。
広範な検索にもかかわらず、単一の machineKey を使用してデプロイする方法に関する明確なガイドラインはないようです。私の最善の次のステップは何ですか?それとも、完全に間違った方向に進んでいますか?
asp.net - Cookie による ASP.NET Web フォームと MVC 認証の共有
私の問題に対する回答の一部が複数の投稿に広がっているようですが、それをまとめることは今のところうまくいきませんでした。この投稿が回答されたときに、より完全なガイドが形成されることを願っています
問題
ASP.NET Web フォーム アプリケーション (W1) を使用しており、しばらくして別の MVC アプリケーション (M1) へのアップグレードを開始したいと考えています。W1 を含むソリューションが 4.5 にアップグレードされ、M1 がソリューションに作成されました。W1 は、ASP.Net メンバーシップ フレームワークを使用します。
テストケース
M1 では、HomeController の About ページに Authorize 属性を追加しました。
[Authorize]
public ActionResult About()
ユーザーがログインする必要がある W1 のページから、M1 の about ページへのリンクを追加しました。
期待
ユーザーが W1 にログインし、M1 についてのページへのリンクをクリックすると、M1 に自動的にログインできることを期待しています。
構成
ステップ1ここで概説されている方法を使用して、W1 から validationKey と decryptionKey を抽出しました。これは論理的な手順のように思えますが、別のキーでもユーザーが W1 にログインできるため、これが必要かどうかはわかりません。
ステップ2hereおよびhereの情報に従い、かなりのデバッグを行った後、プロジェクトの Web.config ファイルのセクションを次のように変更しました。
W1 の場合:
M1 の場合:
現在のステータス
M1 についてのページを対象とする W1 のリンクをクリックすると、ユーザーは認証されず、ログイン画面が表示されます。
構成に欠けているものはありますか?
c# - ビューステート MAC の検証に失敗しました。確認しておいて構成は、同じ validationKey と検証アルゴリズムを指定します
現在、Windows 2008 サーバーで Web アプリケーションを作成しています。アプリケーションを実行しようとするたびに、このエラーが発生します。
ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。
Web 構成ファイルにマシン キーを追加する必要があることをオンラインで読みましたが、それでもエラー メッセージが表示されます。
これが私の現在のWeb構成ファイルです
ここに完全なエラーメッセージがある場合
フォームのコードはこちら
asp.net - Azure Web サイトで machineKey を設定する方法
Azure Web サイトを運営しています。展開するたびに、変更のために全員がログアウトされmachineKey
ます。
で を指定しmachineKey
ましたweb.config
が、これで問題は解決しませんでした。これは、Azure がmachineKey
[1]を自動的に上書きするためだと思います。
ここで同様の質問をいくつか見つけましたが、回答はデッドリンクにリンクしています。
それで、解決策は何ですか?Azure へのデプロイに関係なく、ユーザーのログイン状態を維持する方法は確かにあります。
c# - 手動のマシン キーとワイルドカード Cookie に変更した後に古い Cookie を削除する方法 ASP.NET MVC 4.5
マシンキーを変更した後、同じサブドメインにとどまった後、ASP.NET で Cookie を削除する方法は?
現在、example.domain.com に Cookie がありますが、cookie が foo.domain.com でも機能するように、ワイルドカード Cookie (.domain.com) に移行する必要があります。これを行うために、asp.net ログイン Cookie を暗号化/復号化するマシン キーを手動で設定しました。問題は、古い Cookie を既に持っているユーザーが、サイトにアクセスしようとすると (何らかの理由で古い Cookie を復号化しようとするため)、CryptographicException を受け取ることです。Cookie の名前を変更しましたが、役に立ちませんでした - それでもエラーが発生します。そこで、古い Cookie をすべて削除することにしました。次のコードを使用して、ログイン サイトでこれを実行しようとします。
コードに到達して実行されますが、Google Chrome リソースを調べると、Cookie がまだ残っています。したがって、明らかに削除は機能しませんでした。いくつかの異なる方法を試しました (path ="/" を追加する、cookie.Value を cookie.Value に設定するなど)。何らかの奇妙な理由で Cookie がまだ残っており、それらを削除することはできません。
元の質問に戻ると、Cookie でワイルドカード ドメインに変更し、web.config でマシン キーを明示的に指定した後、ASP.NET MVC 4.5 で Cookie を削除するにはどうすればよいでしょうか。