2

ASP.NET Web サイトと同じサーバーで実行されているコンソール アプリケーションから特定のキャッシュ アイテムをクリアできるようにしたいと考えています。

System.Web を参照してから System.Web.HttpContext.Current を試すと、常に null が返されます。これは理にかなっています。

このコードで試してみたところ、System.Web.HttpContext.Current が null ではなくなりました。

コード:

HttpContext.Current = new HttpContext(
    new HttpRequest("", "http://tempuri.org", ""),
    new HttpResponse(new StringWriter())
    );

// User is logged in
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
    );

// User is logged out
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
    );

ただし、HttpContext.Current.Application は使用できません。私はこれで試します:

..
HttpContext.Current.Application.Add("TestValue", 1);
..
object objReturn = HttpContext.Current.Application.Get("TestValue");
if(objReturn==null)
    Console.WriteLine("objReturn is null");
else
   Console.WriteLine(objReturn);

私の問題は、変数objReturnが常に null であることです。これを達成する方法について他の誰かがより良いアイデアを持っていますか?

4

1 に答える 1

3

キャッシュは ASP.NET ワーカー プロセス内にあり、コンソール アプリケーションから直接アクセスすることはできません。Web コンテキストにいないため、HttpContext.Current は null です。

キャッシュ項目をクリアできる Web ページをアプリケーション自体に追加します。

于 2012-07-25T08:06:02.907 に答える