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 마이크로소프트 애저에서
ASP.NET View State 웹/작업자 역할로 배포된 애플리케이션에 매우 중요한 기능입니다. 마이크로소프트 애저 캐시. 그러나 보기 상태에는 이를 최대한 활용하기 위해 이해하고 해결해야 하는 몇 가지 문제가 있습니다.
우선, ASP.NET View State 특히 Microsoft Azure ASP.NET 응용 프로그램의 페이지에 무거운 컨트롤이 많을 때 매우 커집니다. 이로 인해 각 요청에서 브라우저와 애플리케이션 사이를 오가는 무거운 보기 상태 페이로드가 발생합니다. 뷰 상태 페이로드가 많으면 성능이 느려지고 특히 평균 ASP.NET View State Microsoft Azure 애플리케이션 내에서 이러한 요청 수백만 개가 처리되면 100KB로 끝납니다.
ASP.NET View State 보기 상태의 일부로 기밀 데이터를 클라이언트에 보낼 때 보안 위험이 있습니다. 이 데이터는 공격에 취약하며 심각한 보안 위협인 공격자에 의해 변조될 수 있습니다.
해결책 ASP.NET View State 문제
당신은 해결할 수 있습니다 ASP.NET View State 실제 데이터를 저장하여 Microsoft Azure 응용 프로그램의 문제 ASP.NET View State 분산 캐시의 서버 측에 있으며 요청 페이로드와 함께 브라우저로 다시 보내지 않습니다.
NCache for Azure는 Microsoft Azure를 위한 매우 빠르고 확장 가능한 분산 캐시입니다. 실제 저장할 수 있습니다. ASP.NET View State 대신 서버 측의 분산 캐시에서 요청 페이로드의 클라이언트에 보기 상태로 작은 토큰을 보냅니다. 이렇게 하면 요청 페이로드 크기가 크게 줄어듭니다. View State 토큰은 서버 측에서 올바른 것을 찾기 위해 사용됩니다. ASP.NET View State in NCache 포스트백의 Azure 분산 캐시용. 더 작은 페이로드는 Microsoft Azure 애플리케이션의 각 요청에서 더 이상 거대한 보기 상태를 처리하지 않기 때문에 성능 및 대역폭 활용과 관련된 문제를 해결합니다. 또한 서버 측에 저장된 View State는 NCache Azure 분산 캐시는 클라이언트에 노출되지 않으므로 위에서 언급한 보안 문제를 해결합니다.
다음은 대신 사용되는 토큰의 예입니다. ASP.NET View State 과 NCache 애저용 ASP.NET View State 공급자:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
사용 NCache 애저용 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 애저용 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는 Microsoft Azure 애플리케이션이 저장할 수 있는 코드 변경 없음 옵션을 제공합니다. ASP.NET View State 분산 캐시의 서버 측에서. NCache 애저용 ASP.NET View State 공급자는 클라이언트 측 보기 상태와 관련된 보안 문제를 해결하면서 요청 페이로드 및 대역폭 소비를 줄여 성능을 최적화합니다.
다운로드 NCache Open Source Microsoft Azure에서 실행합니다.
당신 말이 맞아요 NCache 원래 문자열을 ASP.NET으로 보냅니다.
보기 상태가 캐싱되지 않는 한 환경에 특정한 구성에 문제가 있어야 합니다. 곧 등록된 이메일 주소로 이메일을 보내 조율하고 더 많은 도움을 드릴 것입니다.
Hi
기사에서 설명한 모든 단계를 구성했지만 뷰 상태 문자열이 변경되지 않았고 크기가 작아지지 않았습니다. 주요 아이디어는 ncache 문자열을 자신의 문자열로 바꾼 다음, ncache 실행 시간에 원래 문자열을 asp.net에 전달할 것입니다. 내가 틀렸습니까?
자세한 정보를 얻을 수 있는 방법이나 원격 지원을 받을 수 있는지 알려주세요.
그렇게 생각하셨다니 다행입니다.
기본적으로, NCache 포스트백이 얼마나 늦게 발행되는지에 관계없이 모든 ViewState를 캐시에 무기한 유지합니다. 따라서 모든 뷰 상태 요청은 캐시에 의해 처리됩니다.
반면에 시간 기반 만료(절대 또는 슬라이딩)를 ViewState에 연결하고 값을 충분히 높게 설정하여 긴 팟 백 시간 후에도 캐시 미스가 발생하지 않도록 할 수도 있습니다.
다음을 사용하여 ViewState를 그룹화할 수도 있습니다. NCache 세션. 이렇게 하면 사용자 세션이 캐시에서 제거될 때 관련된 모든 ViewState가 자동으로 제거됩니다. 이렇게 하면 최상의 성능을 제공하는 캐시에 대한 추가 메모리 로드를 방지할 수 있습니다.
NCache 상당히 유용하게 들립니다.
페이지에서 viewstate의 경우 아주 오랜 시간이 지난 후에도 아무런 영향 없이 페이지가 다시 게시될 수 있습니다.
어떻게 NCache 이 시나리오를 처리하시겠습니까?