1

我正在修改一些代码来执行 XYZ 等,并且遇到了问题。

WebAPI 方法

public async Task<FileUploadResult> PostFile([FromUri]int width)
{
    // Right here the HTTPContext.Current == null;
    ... Some code here
    await Request.Content.ReadAsMultipartAsync(streamProvider);
}

我已经查看并看到此行将恢复您的 HttpContext.Current

add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"

所以我添加了上面的设置,它返回了 HttpContext.Current。据我所知,我可以从 HttpContext.Current.Cache 和 HttpRuntime.Cache 访问(读取).Cache 对象。

但是,由于某种原因,我无法成功写入缓存。

我的代码没有抛出异常,但是当我尝试读取缓存时它根本不存在。

我的代码在其他任何地方都运行良好,只是不在异步 Web api 调用中。

缓存代码

private Cache sysCache = HttpContext.Current.Cache;
// also treid  private Cache sysCache = HttpRuntime.Cache
sysCache.Insert(fileToCache.ToMD5HashString(), 
                        fileToCache,
                        null,
                        Cache.NoAbsoluteExpiration,
                        new TimeSpan(0, 0, 5, 0));

对此问题的任何帮助将不胜感激。

提前致谢。

4

1 回答 1

2

非常感谢您的帮助。事实证明,它根本与异步运行时无关。事实证明,我将项目存储到缓存中的类,以及试图调用这些项目的 Web api 位于同一站点下的两个不同应用程序中,因此它们有两个不同的缓存存储。

于 2013-10-01T13:46:53.907 回答