XYZ 등을 수행하기 위해 일부 코드를 수정 중이며 문제가 발생합니다.비동기 작업 중에 HttpRuntime.Cache에 저장할 수 없습니다.
내가 보니이 라인이 HttpContext.Current
add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"
그래서 내가 추가 한 위의 설정을 복원합니다 것을 알과는 HttpContext.Current 반환 한
public async Task<FileUploadResult> PostFile([FromUri]int width)
{
// Right here the HTTPContext.Current == null;
... Some code here
await Request.Content.ReadAsMultipartAsync(streamProvider);
}
WebAPI 방법. HttpContext.Current.Cache 및 HttpRuntime.Cache에서 .Cache 개체에 액세스 (읽기) 할 수 있음을 알 수 있습니다.
하지만 어떤 이유로 캐시에 성공적으로 쓸 수 없습니다.
내 코드는 예외를 throw하지 않지만 캐시를 읽으려고하면 단순히 거기에 없습니다.
내 코드는 비동기 웹 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));
캐시 코드입니다.
미리 감사드립니다.
async를 입력하면 현재 컨텍스트 (HttpContext.Current 포함)가 손실됩니다. 현재 HttpContext를 인수로 전달하십시오. –
나는 당신의 제안을 시도했지만, 불행히도 그것은 효과가 없었습니다. 내가 캐시에 저장할 수없는 뭔가가 여기에 있습니다. 캐시 (읽기)를 사용하여 제안 또는 key = "aspnet : UseTaskFriendlySynchronizationContext"value = "true"캐시에 저장되는 항목은 저장되지 않습니다. – QBM5
문서에 "응용 프로그램 도메인 당 Cache 클래스의 인스턴스가 하나이므로 결과적으로 Cache 속성에서 반환하는 Cache 개체는 응용 프로그램 도메인의 모든 요청에 대한 Cache 개체입니다." –