Pregunta

Estoy utilizando Global.asax para realizar el registro al final de cada solicitud a través del evento Application_EndRequest. Sin embargo, estoy viendo algún comportamiento extraño de ciertos valores almacenados en la colección HTTPContext.Current.Items.

A continuación se muestra el resultado de la depuración para una enumeración anulable. Se puede ver que hay un valor, pero HasValue resuelto en Falso?!

{System.Nullable(Of AreaNameEnum)}
    HasValue: False
    hasValue: False
    Value: {System.InvalidOperationException}
    value: ADMIN {0}

Supongo que es demasiado tarde en el ciclo de vida de la solicitud para acceder a la HttpContext.Current - pero parece que funciona a veces y otras no. ¿Alguien puede arrojar más luz sobre exactamente lo que está pasando?

Gracias

¿Fue útil?

Solución

Anulable es una estructura que contiene un HasValue boolean y un valor T donde T es un tipo de valor. En este caso una enumeración. La enumeración tiene que tener algún valor en este caso el valor por defecto 0, sin embargo el valor público lanza una excepción porque HasValue es falso.

Lo que está viendo es la parte interna de la forma anulable hace lo que hace. No se puede leer nada en el campo valor interno tener ningún valor cuando HasValue es falsa. Después de todo, si el valor podría contener nulos no habría ningún punto en el uso anulable aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top