ASP.NET View State はクライアント側の状態管理メカニズムであり、ページと制御値を保存するために使用されます。 ASP.NET View State エンコードされたBase64文字列としてのページ上の非表示フィールドです。 これは、すべての応答の一部としてクライアントに送信され、ポストバックの一部としてクライアントによってサーバーに返されます。
1 2 3 4 5 6 7 8 9 10 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQ CQ9kFgICBQ9kFgJmD2QWAgIBDxYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3 Jvc29mdC5TaGFyZVBvaW50LldlYkNvbnRyb2xzLlNQQ29udHJbE1vZGUsIE1pY3Jv 29mdC5TaGFyZVBvaW50LCBWZXJzaW9uPTEyLjAuMC4wLCBDdWx0dXJlPW5ldXRyWw sIFB1YmxpY0tleVRva2VuPTcxZTliY2UxMTFlOTQyOWMBZAIDD2QWDgIBD2QWBgUm Z19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2RkZAUmZ18yN DQ3NmI4YV8xY2FlXzRmYTVfOTkxNl8xYjIyZGYwNmMzZTQPZBYCZg8PZBYCHgVjbG DQWBgUmZ19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2...."/> |
問題 ASP.NET View State MicrosoftAzureで
ASP.NET View State でWeb/ワーカーロールとしてデプロイされたアプリケーションにとって非常に重要な機能です MicrosoftAzureキャッシュ。 ただし、ビューステートには、それを最大限に活用するために理解して解決する必要のあるいくつかの問題があります。
まず第一に、 ASP.NET View State 特にMicrosoftAzureASP.NETアプリケーションのページに多くの重いコントロールがある場合、非常に大きくなります。 これにより、リクエストごとにブラウザとアプリケーション間を行き来する重いビュー状態のペイロードが発生します。 ビューステートペイロードが重いと、パフォーマンスが低下し、特に平均的な場合に帯域幅が余分に消費されます。 ASP.NET View State 最終的には数百キロバイトになり、そのような要求がMicrosoftAzureアプリケーション内で数百万回処理されると発生します。
ASP.NET View State ビューステートの一部として機密データをクライアントに送信する場合のセキュリティリスクでもあります。 このデータは攻撃に対して脆弱であり、攻撃者によって改ざんされる可能性があります。これは重大なセキュリティ上の脅威です。
への解決策 ASP.NET View State 問題
解決できます ASP.NET View State 実際のファイルを保存することによるMicrosoftAzureアプリケーションの問題 ASP.NET View State 分散キャッシュのサーバー側で、リクエストペイロードと一緒にブラウザに送り返すことはありません。
NCache for Azureは、MicrosoftAzure用の非常に高速でスケーラブルな分散キャッシュです。 それはあなたが実際に保存することを可能にします ASP.NET View State サーバー側の分散キャッシュで、代わりにビューステートとして小さなトークンをリクエストペイロードでクライアントに送信します。 これにより、リクエストのペイロードサイズが大幅に削減されます。 次に、サーバー側でビューステートトークンを使用して適切なものを見つけます ASP.NET View State in NCache ポストバックのAzureDistributedCacheの場合。 ペイロードを小さくすると、Microsoft Azureアプリケーションの各要求で巨大なビューステートを処理しなくなるため、パフォーマンスと帯域幅の使用率に関連する問題が解決されます。 また、サーバー側に保存されているビューステートは NCache Azureの分散キャッシュはクライアントに公開されないため、上記のセキュリティ上の懸念に対処します。
代わりに使用されているトークンの例を次に示します ASP.NET View State NCache Azureの場合 ASP.NET View State プロバイダー:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
使い方 NCache Azureの場合 ASP.NET View State キャッシング
ステップ1: App_browsersディレクトリにapp.browserファイルを作成します。 次のように、ページアダプタをapp.browserファイルにプラグインします。
ファイル:App_browsersapp.browser
1 2 3 4 5 6 |
<browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Alachisoft.NCache.Adapters.PageAdapter" /> </controlAdapters> </browser> |
ステップ2: web.configファイルのコンパイルセクションに次のアセンブリリファレンスを追加します。
ファイル:web.config
1 2 3 4 5 6 |
<compilation defaultLanguage="c#" debug="true" targetFramework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.Adapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/> </assemblies> </compilation> |
ステップ3: 登録する NCache web.configファイルのAzure構成セクション用。
ファイル:web.config
1 2 3 4 5 6 7 |
<configSections> <sectionGroup name="ncContentOptimization"> <section name="settings" type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings" allowLocation="true" allowDefinition="Everywhere"/> </sectionGroup> </configSections> |
ステップ4: 上記で登録したweb.configファイルで設定セクションの設定を指定します。 これらの設定は制御します NCache Azureの場合 ASP.NET View State キャッシング機能。
ファイル:web.config
1 2 3 4 5 6 7 8 9 |
<ncContentOptimization> <settings viewstateThreshold="12" enableViewstateCaching="true" enableTrace="false" groupedViewStateWithSessions="false" <cacheSettings cacheName="myCache" maxViewStatesPerSession="3"> <expirationtype="Absolute" duration="1"/> </cacheSettings> </settings> </ncContentOptimization> |
まとめ
NCache for Azureは、MicrosoftAzureアプリケーションに保存するコード変更なしのオプションを提供します ASP.NET View State 分散キャッシュのサーバー側。 NCache Azureの場合 ASP.NET View State プロバイダーは、クライアント側のビューステートに関連するセキュリティの問題に対処しながら、要求のペイロードと帯域幅の消費を削減することでパフォーマンスを最適化します。
ダウンロード NCache Open Source MicrosoftAzureで実行します。
あなたは正しいです NCache 元の文字列をASP.NETに送信します。
ビューステートがキャッシュされない限り、環境に固有の構成に問題があるはずです。 登録したメールアドレスにまもなくメールを送信し、調整とサポートを行います。
Hi
記事で説明したすべての手順を構成しましたが、ビューステート文字列は変更されず、サイズも小さくなりませんでした。主なアイデアは次のとおりです。 ncache 文字列を自分の文字列に置き換えてから、 ncache 実行時に元の文字列がasp.netに渡されますが、間違っていますか?
教えてください、どうすればより多くの情報を入手できますか、またはリモートアシスタンスを利用できるかどうかを教えてください。
あなたがそう思ってくれてうれしいです。
デフォルトでは、 NCache ポストバックが発行されるまでの遅延に関係なく、すべてのViewStateをキャッシュに無期限に保持します。 したがって、すべてのビューステート要求はキャッシュによって処理されます。
一方、タイムベースの有効期限(絶対またはスライド)をViewStateに関連付けて、ポットバックタイムが長い場合でもキャッシュミスを回避できるように値を十分に高く設定することもできます。
ViewStateをグループ化することもできます NCache セッション。 このように、ユーザーセッションがキャッシュから削除されると、関連するすべてのViewStateが自動的に削除されます。 これにより、キャッシュへの余分なメモリ負荷を回避し、最高のパフォーマンスを実現できます。
NCache 非常に便利に聞こえます。
ページ内のビューステートの場合、非常に長い時間の経過後でも、影響を与えることなくページをポストバックできます。
どのように NCache このシナリオを処理しますか?