내 ASP.NET MVC 웹 사이트에서 OutputCaching을 사용하려고합니다. 문제는, 내가 querystring 매개 변수 중 하나의 값을 변경하려고하면 요청 된 첫 번째 항목에 대한 데이터를 반환합니다! 사용자 정의 속성 '키'라는 쿼리 문자열 PARAM 확인하고 메모리 사전에을 확인 - ApiAuthorize :내 ASP.NET MVC 웹 사이트에서 캐싱이 올바르게 작동하지 않습니까?
여기
[ApiAuthorize]
[HandleErrorAsJson]
public class SearchController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult ScoreCard(string foo, byte? bar, byte? pewpew)
{
..
}
}
- (변경된 PARAM 이름으로) 주 1 내 코드입니다 그것이 존재하는지 확인하십시오.
- 참고 2 : HandleErrorAsJson - 예외가 발생하거나/throw 될 경우 오류 메시지를 json으로 반환하는 사용자 지정 특성입니다.
여기에 내가이 행동을 만들고있어 두 개의 샘플 호출입니다 : -
- /(foo는/http://api.MySite.com/search/scorecard?foo=hello+world,+PewPew&key=abcd1234&bar=2
- 를 GET 첫 번째 통화에서 http://api.MySite.com/search/scorecard?foo=invalid+search+stuff&key=abcd1234&bar=2
때문에 데이터를 GET = hello world, Pew Pew)가 200 OK로 반환됩니다. 두 번째 API 호출은 이전 호출의 데이터가 포함 된 200 OK를 반환합니다.
또한 프록시 서버를 사용하고 있지 않습니다. OutputCache 특성을 주석으로 처리하면 모두 좋다.
나는 또한 ..... (수동 내가 캐시에 필요할 때마다 목록) 다음과 같은 노력했습니다
[OutputCache(Duration = 60, VaryByParam = "foo,key,bar,pewpew")]
없음 운 없습니다 :(내가 있는지 확인해야하는지
공지 사항 난 캐시 고유 키의 일부로 API 'Key'매개 변수를 포함하십시오. 사용자가 동일한 것을 검색하는 것을 원하지 않지만 두 번째 사용자가 올바른 키를 갖고 있지 않으면 캐싱 된 결과를 얻지 않아야합니다 ,하지만 오류 메시지 (기술적으로 401 승인되지는 않지만 어쨌든)는 ...
ghts?
+1 직접 질문에 직접 초점을 맞 춥니 다. 나는 그가 여기에있는 유일한 문제라고 생각하지 않지만. 아래에 귀하의 의견에 대답했다. – dove