Ich stieß heute auf ein seltsames Problem, das für mich keinen Sinn ergab. Hier eine Zusammenfassung:System.Web.HttpContext.Current Nullen selbst nach der Überprüfung für einen Cache
innerhalb einer Methode, überprüfe ich für einen Cache gespeicherten Artikel wie folgt:
private async Task<RatesStatus> getRatesStatusAsync() {
//...
if (_currentHttpContext != null) {
//Here, I am checking for a Cached item
var cachedRatesStatusObj = HttpContext.Current.Cache[Constants.RATESSTATUS_CACHE_KEY_NAME];
if (cachedRatesStatusObj != null)
return (RatesStatus)cachedRatesStatusObj;
}
//...
cacheRatesStatusObject(ratesStatus);
//...
}
Hier ist die HttpContext.Current
nicht null ist, wie innerhalb einer ASP.NET-Anwendung erwartet. Dann in der cacheRatesStatusObject
Methode, ich überprüfen, ob HttpContext.Current
null ist oder nicht, wie unten:
private void cacheRatesStatusObject(RatesStatus ratesStatus) {
//...
//Seeing if HttpContext.Current is null or not first.
//and it is null here...
if (HttpContext.Current == null)
return;
//...
}
Und es ist dort null. Keine Ahnung, was hier passiert. Irgendwelche Gedanken?
bemerkte ich Ihre Methode 'async' gekennzeichnet ist. Nur um sicher zu sein, wo auch immer Sie diese Methode aufrufen, Sie tun ein "warten" irgendwo, bevor die "Antwort" zurück zum Client gesendet und geschlossen wird, richtig? Andernfalls könnte es sich nur um eine Wettlaufsituation handeln, bei der die "Antwort" zurückgegeben und entsorgt wird, bevor sie zu dieser Linie gelangt, aber immer noch in der Linie oben verfügbar ist. –
@GuthMD Ja, ich habe irgendwo innerhalb der Methode "erwarten". Das muss das Problem sein. – tugberk