Asp.net mvc 当使用多租户应用程序的varybycustom时,如何从输出缓存中退出?

Asp.net mvc 当使用多租户应用程序的varybycustom时,如何从输出缓存中退出?,asp.net-mvc,caching,azure,azure-web-roles,Asp.net Mvc,Caching,Azure,Azure Web Roles,我有一个在Azure Web Worker角色上运行的应用程序,它使用位于同一位置的角色缓存作为默认输出缓存 我还使用varybycustom,这样我就可以部分缓存具有可缓存区域的页面 因此,在我的主页中,我有以下内容: <div id="collectionsheader"> @Html.Action("Header", new{ controller = "Collections", area="Dam" }) </div> varybycustom是这样

我有一个在Azure Web Worker角色上运行的应用程序,它使用位于同一位置的角色缓存作为默认输出缓存

我还使用varybycustom,这样我就可以部分缓存具有可缓存区域的页面

因此,在我的主页中,我有以下内容:

 <div id="collectionsheader">
    @Html.Action("Header", new{ controller = "Collections", area="Dam" })
</div>
varybycustom是这样的,在这个多租户应用程序中,访问该应用程序的每个子域的缓存输出都会更改。这在Global.ascx中:

public override string GetVaryByCustomString(HttpContext context, string arg)
    {
        if (arg == "host")
        {
            return context.Request.Headers["host"];
        }
    }
那么问题来了 当我需要强制刷新此项目时,如何逐出每个域的此内容

目前我正在这样做:

var urlToRemove = url.Action("Header", "Collections");
if (urlToRemove != null) HttpResponse.RemoveOutputCacheItem(urlToRemove);
但这不起作用,我相信这是因为VaryByCustom密钥

有人能告诉我,当我需要时,我将如何驱逐这些缓存内容吗


提前感谢。

您有没有找到解决方案?我现在也遇到了这个问题。
var urlToRemove = url.Action("Header", "Collections");
if (urlToRemove != null) HttpResponse.RemoveOutputCacheItem(urlToRemove);