Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

HttpContext.Current

3 views
Skip to first unread message

Bernhard

unread,
Mar 29, 2007, 11:08:06 AM3/29/07
to
Hallo zusammen.

Ich habe folgendes Beispiel in des Hilfe gefunden.
Benachrichtigen einer Anwendung beim Entfernen eines Elements aus dem Cache
http://msdn2.microsoft.com/de-de/library/7kxdx246(VS.80).aspx
Leider funktioniert es nicht wie gewollt.

Beim ersten aufrufen der Seite landet alles wie gewünscht im Cache.

Auch der Callback wird nach der Minute ausgeführt, doch beim aufrufen der
Methode CacheReport()
ist der HttpContext.Current immer null!
Und ich bekomme eine Exception.{"Der Objektverweis wurde nicht auf eine
Objektinstanz festgelegt."}

Wie kann ich das Problem lösen?

Bernhard

protected void Page_Load(object sender, EventArgs e)
{
this.Label1.Text = ReportManager.GetReport();
}

using System;
using System.Web;
using System.Web.Caching;
public static class ReportManager
{
private static bool _reportRemovedFromCache = false;
static ReportManager()
{ }

public static String GetReport()
{
lock (typeof(ReportManager))
{
if (HttpContext.Current.Cache["MyReport"] != null)
return (string)HttpRuntime.Cache["MyReport"];
else
{
CacheReport();
return (string)HttpRuntime.Cache["MyReport"];
}
}
}

public static void CacheReport()
{
lock (typeof(ReportManager))
{
HttpContext.Current.Cache.Add("MyReport",
CreateReport(), null, DateTime.MaxValue,
new TimeSpan(0, 1, 0),
System.Web.Caching.CacheItemPriority.Default,
ReportRemovedCallback);
}
}

private static string CreateReport()
{
System.Text.StringBuilder myReport =
new System.Text.StringBuilder();
myReport.Append("Sales Report<br />");
myReport.Append("2005 Q2 Figures<br />");
myReport.Append("Sales NE Region - $2 million<br />");
myReport.Append("Sales NW Region - $4.5 million<br />");
myReport.Append("Report Generated: " + DateTime.Now.ToString()
+ "<br />");
myReport.Append("Report Removed From Cache: " +
_reportRemovedFromCache.ToString());
return myReport.ToString();
}

public static void ReportRemovedCallback(String key, object value,
CacheItemRemovedReason removedReason)
{
_reportRemovedFromCache = true;
CacheReport();
}
}

Marco von Frieling

unread,
Mar 29, 2007, 3:38:55 PM3/29/07
to
Hallo Bernhard schrieb:

> Beim ersten aufrufen der Seite landet alles wie gewünscht im Cache.
>
> Auch der Callback wird nach der Minute ausgeführt, doch beim aufrufen der
> Methode CacheReport()
> ist der HttpContext.Current immer null!
> Und ich bekomme eine Exception.{"Der Objektverweis wurde nicht auf eine
> Objektinstanz festgelegt."}
>
> Wie kann ich das Problem lösen?
Schau mal hier:
news://msnews.microsoft.com:119/uyyDjK0...@TK2MSFTNGP05.phx.gbl

lg,
Marco

Harald M. Genauck

unread,
Mar 29, 2007, 9:32:56 PM3/29/07
to
Hallo Bernhard,

> Ich habe folgendes Beispiel in des Hilfe gefunden.
> Benachrichtigen einer Anwendung beim Entfernen eines Elements aus dem
> Cache
> http://msdn2.microsoft.com/de-de/library/7kxdx246(VS.80).aspx
> Leider funktioniert es nicht wie gewollt.
>
> Beim ersten aufrufen der Seite landet alles wie gewünscht im Cache.
>
> Auch der Callback wird nach der Minute ausgeführt, doch beim aufrufen der
> Methode CacheReport()
> ist der HttpContext.Current immer null!
> Und ich bekomme eine Exception.{"Der Objektverweis wurde nicht auf eine
> Objektinstanz festgelegt."}
>
> Wie kann ich das Problem lösen?

HttpContext.Current ist ist nur während eines Requests gültig. Der CallBack
wird aber zu einem davon unabhängigen Zeitpunkt ausgeführt.

Auf den Cache kannst Du aber trotzdem auch jederzeit unabhängig vom Context
zugreifen:

System.Web.Hosting.HostingEnvironment.Cache


Viele Grüße

Harald M. Genauck

ABOUT Visual Basic http://www.aboutvb.de (Herausgeber)
"visual studio one" - http://www.visualstudio1.de (Chefredakteur)

us...@domain.invalid

unread,
Mar 30, 2007, 4:24:13 AM3/30/07
to
Hallo Marco,

Marco von Frieling schrieb:

Danke
(und dabei hab ich die Suche vor meinem Post bemüht, wohl mit Tippfehler?)

Gruß Bernhard

admirado...@gmail.com

unread,
Aug 5, 2015, 11:26:53 AM8/5/15
to
Any solution about it ? full source code ?
0 new messages