ASP.NET View State es un mecanismo de gestión de estado del lado del cliente, que se utiliza para guardar valores de página y control. ASP.NET View State es un campo oculto en la página como una cadena codificada en Base64. Se envía al cliente como parte de cada respuesta y el cliente lo devuelve al servidor como parte de una respuesta.
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...."/> |
Problemas con ASP.NET View State en Microsoft Azure
ASP.NET View State es una característica muy importante para las aplicaciones implementadas como roles web/worker en Caché de Microsoft Azure. Sin embargo, Ver estado viene con algunos problemas que debe comprender y resolver para poder aprovecharlo al máximo.
En primer lugar, ASP.NET View State se vuelve muy grande, especialmente cuando su aplicación Microsoft Azure ASP.NET tiene muchos controles pesados en sus páginas. Esto da como resultado una carga útil de estado de vista pesada que viaja de un lado a otro entre el navegador y su aplicación en cada solicitud. La carga útil de estado de vista pesada ralentiza el rendimiento y también da como resultado un consumo de ancho de banda adicional, especialmente cuando un promedio ASP.NET View State termina en 100 de kilobytes y cuando se procesan millones de dichas solicitudes dentro de su aplicación de Microsoft Azure.
ASP.NET View State también es un riesgo de seguridad cuando se envían datos confidenciales como parte del estado de vista al cliente. Estos datos son vulnerables a los ataques y pueden ser manipulados por un atacante, lo que representa una grave amenaza para la seguridad.
Solución a ASP.NET View State Problemas
Puedes resolver ASP.NET View State problemas en las aplicaciones de Microsoft Azure mediante el almacenamiento de la actual ASP.NET View State en el lado del servidor en un caché distribuido y nunca lo envíe de vuelta al navegador junto con la carga útil de la solicitud.
NCache para Azure es un caché distribuido extremadamente rápido y escalable para Microsoft Azure. Le permite almacenar ASP.NET View State en caché distribuida en el lado del servidor y, en su lugar, envíe un token pequeño como estado de vista al cliente en una carga útil de solicitud. Esto reduce drásticamente el tamaño de la carga útil de la solicitud. El token View State se usa luego en el lado del servidor para encontrar el derecho ASP.NET View State in NCache para Azure Distributed Cache en las devoluciones posteriores. Una carga útil más pequeña resuelve los problemas relacionados con el rendimiento y la utilización del ancho de banda porque ya no se trata de un estado de vista enorme en cada solicitud en su aplicación de Microsoft Azure. Además, View State almacenado en el lado del servidor en NCache para la caché distribuida de Azure nunca se expone a los clientes, por lo que aborda los problemas de seguridad mencionados anteriormente.
Aquí hay un ejemplo de un token que se usa en lugar de ASP.NET View State NCache para azur ASP.NET View State proveedor:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
Usar NCache para azur ASP.NET View State Almacenamiento en caché
Paso 1: Cree un archivo app.browser en el directorio App_browsers. Conecte los adaptadores de página en el archivo app.browser de la siguiente manera:
Archivo: 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> |
Paso 2: Agregue la siguiente referencia de ensamblado en la sección de compilación del archivo web.config.
Archivo: 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> |
Paso 3: Registro NCache para la sección de configuración de Azure en su archivo web.config.
Archivo: 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> |
Paso 4: Especifique la configuración para su sección de configuración en el archivo web.config (que se registró anteriormente). Estos ajustes controlan NCache para azur ASP.NET View State Funciones de almacenamiento en caché.
Archivo: 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> |
Conclusión
NCache para Azure proporciona una opción sin cambio de código para que sus aplicaciones de Microsoft Azure almacenen ASP.NET View State en el lado del servidor en un caché distribuido. NCache para azur ASP.NET View State El proveedor optimiza el rendimiento al reducir la carga útil de la solicitud y el consumo de ancho de banda al tiempo que aborda los problemas de seguridad relacionados con el estado de vista del lado del cliente.
Descargar NCache Open Source y ejecútelo en Microsoft Azure.
tienes razón sobre NCache enviando la cadena original a ASP.NET.
En cuanto al estado de vista que no se almacena en caché, debe haber algún problema con su configuración específica para su entorno. En breve le enviaremos un correo electrónico a su dirección de correo electrónico registrada para coordinar y ayudarlo más.
Hi
Configuré todos los pasos que describiste en el artículo, pero la cadena de estado de vista no cambió y no se hizo más pequeña, la idea principal es ncache reemplace la cadena con su propia cadena y luego, ncache en el tiempo de ejecución pasará la cadena original a asp.net, me equivoco?
Por favor, hágamelo saber, ¿cómo puedo obtener más información o si será posible obtener asistencia remota?
Me alegro de que lo hayas pensado así.
Por defecto, NCache mantiene todos los ViewStates indefinidamente en el caché, independientemente de qué tan tarde se emita la publicación. Por lo tanto, todas las solicitudes de estado de vista serán manejadas por el caché.
Por otro lado, también puede asociar vencimientos de base de tiempo (absolutos o deslizantes) a ViewState y establecer el valor lo suficientemente alto para evitar errores de caché incluso después de un tiempo de recuperación prolongado.
También puede agrupar ViewState con NCache Sesiones. De esta forma, cuando una sesión de usuario se elimina de la memoria caché, todos los ViewStates relacionados se eliminan automáticamente. Esto ayuda a evitar la carga de memoria adicional en el caché y le proporciona el mejor rendimiento.
NCache suena bastante útil.
En el caso de viewstate en la página, la página se puede volver a publicar incluso después de mucho tiempo sin ningún impacto.
¿Cómo NCache manejar este escenario?