mvc 응용 프로그램에서 ETag 헤더가 표시되지 않습니다.

user2598794

나는 액션 필터 생성을 가지고 놀고 ETag에 대한 액션 필터를 구현하고 10 초 동안 mvc 4 템플릿에서 HomeController의 캐싱을 만들고 싶습니다.

내 속성은 다음과 같습니다.

public class EtagFilterAttribute : ActionFilterAttribute
    {
        private DateTime _currentTime = DateTime.Now;

        private string _currentEtag = string.Empty;

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var httpContext = filterContext.RequestContext.HttpContext;

            string eTag = httpContext.Request.Headers["ETag"];

            string responseETag = GetEtag();

            if (!string.IsNullOrEmpty(eTag))
            {
                if (eTag.Equals(responseETag))
                {
                    filterContext.HttpContext.Response.StatusCode = 304;

                    filterContext.HttpContext.Response.StatusDescription = "Not Modified";
                }

                return;
            }

            filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);

            filterContext.HttpContext.Response.AddHeader("ETag", responseETag);

            filterContext.HttpContext.Response.Cache.SetETag(responseETag);
        }

        private string GetEtag()
        {
            if (_currentTime <= DateTime.Now.AddSeconds(10))
            {
                return _currentEtag;
            }

            _currentEtag = GenerateEtag();

            return _currentEtag;
        }

        private string GenerateEtag()
        {
            return Guid.NewGuid().ToString().Substring(0, 20);
        }
    }

다음은 HomeController입니다.

public class HomeController : Controller
    {
        [EtagFilter]
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

            return View();
        }

        [EtagFilter]
        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        [EtagFilter]
        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }

컴파일되고 실행되지만 Chrome 개발자 도구 네트워크-> 헤더 탭에 ETag가 표시되지 않습니다.

요청 URL : http : // : 1772 / Home / 요청 방법 정보 : GET 상태 코드 : 200 OK 요청 헤더 소스보기 Accept : text / html, application / xhtml + xml, application / xml; q = 0.9, /; q = 0.8 Accept-Encoding : gzip, deflate, sdch Accept-Language : en-US, en; q = 0.8 Connection : keep-alive Cookie : __ RequestVerificationToken = q0yQrf5ee5bsOW-1OXKK754FeRZM89uNQQ1rvN2cVRXaHs5-PGhOT7sq0uZ5-PGhOTt2zw2cUyFuNQQ1rvN2cVRXaHs5-PGhOTt2zw2cUy 1772 Referer : http : // : 1772 / User-Agent : Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 29.0.1547.76 Safari / 537.36 Response Headersview source Cache-Control : private Content -Encoding : gzip Content-Length : 956 Content-Type : text / html; charset = utf-8 날짜 : Fri, 04 Oct 2013 15:34:02 GMT Server : Microsoft-IIS / 8.0 Vary : Accept-Encoding X-AspNet-Version : 4.0.30319 X-AspNetMvc-Version : 4.0 X-Powered- 작성자 : ASP.NET X-SourceFiles : =? UTF-8? B? ZDpcTXlEb2N1bWVudHNcR2VuZXJhbFxDI1wuTmV0IE1lbnRvcmluZyBQcm9ncmFtXEhUVFBcRXhhbXBsZEFGV2ZxBsZEFGVIw21

내가 어디에서 착각했는지 말해 줄래?

user2598794

이것은 작동합니다 :

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var httpContext = filterContext.RequestContext.HttpContext;

            string eTag = httpContext.Request.Headers["ETag"];

            string responseETag = GetEtag();

            if (!string.IsNullOrEmpty(eTag))
            {
                if (eTag.Equals(responseETag))
                {
                    filterContext.HttpContext.Response.StatusCode = 304;

                    filterContext.HttpContext.Response.StatusDescription = "Not Modified";
                }

                return;
            }

            httpContext.Response.AddHeader("ETag", responseETag);
        }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Spring MVC 응용 프로그램에서 경로 변수를 사용할 때 이미지가 표시되지 않습니다.

분류에서Dev

.subscribe가 내 ASP.NET MVC 응용 프로그램에서 작동하지 않습니다.

분류에서Dev

내 mvc 응용 프로그램에서 jqgrid의 호출기가 보이지 않습니다.

분류에서Dev

응용 프로그램 아이콘 배지가 표시되지 않습니다.

분류에서Dev

응용 프로그램에서 이미지가 표시되지 않는 이유

분류에서Dev

MVC 4 RedirectToAction에 사용자 지정 헤더가 표시되지 않음

분류에서Dev

asp mvc 응용 프로그램의 이미지 폴더에서 이미지를 삭제하면 InternetExplorer에 적용되지 않습니다.

분류에서Dev

SlickGrid가 MVC 응용 프로그램에서 SQL 데이터를 표시하지 않음

분류에서Dev

ClickOnce에서 '응용 프로그램 ID가 설정되지 않았습니다'

분류에서Dev

응용 프로그램에 단추가 표시되지 않습니다. 뭐가 문제 야?

분류에서Dev

Ubuntu 18.04 / GNOME 소프트웨어 폴더 그룹이 모든 응용 프로그램 표시에서 존중되지 않습니다.

분류에서Dev

HTML 메일 보내기가 일부 응용 프로그램에서는 올바르게 표시되지만 다른 응용 프로그램에서는 표시되지 않습니까?

분류에서Dev

OleAutoObj가 내 PC에서 Excel 응용 프로그램을 열지 않습니다.

분류에서Dev

Apache Calcite가 웹 응용 프로그램에서 작동하지 않습니다.

분류에서Dev

IIS 8에 MVC4 응용 프로그램을 배포 한 후 이미지가로드되지 않고 CSS가 참조되지 않습니다.

분류에서Dev

Synaptic Package Manager가 응용 프로그램 메뉴에서 시작되지 않습니다.

분류에서Dev

응용 프로그램 충돌 및 토스트 메시지가 표시되지 않습니다

분류에서Dev

내 응용 프로그램 폴더에 Xcode 11.1이 표시되지 않음

분류에서Dev

User.Claims가 MVC 응용 프로그램에서 비어 있습니다.

분류에서Dev

MVC 응용 프로그램이보기에 데이터를 표시하지 않습니다.

분류에서Dev

winforms 응용 프로그램에서 메시지 상자가 표시되지 않음 C #

분류에서Dev

typescript 및 Phaser.io를 사용하는 Asp.net MVC 응용 프로그램에 이미지가 표시되지 않음

분류에서Dev

각도 응용 프로그램에 noUiSlider가 표시되지 않음

분류에서Dev

html을 바꾼 후 JQuery .show ()가 MVC 4 응용 프로그램에서 스타일을 지 웁니다.

분류에서Dev

암호가 C # 응용 프로그램에서 SQL Server에 제대로 저장되지 않습니다.

분류에서Dev

UILabel이 내 응용 프로그램에 표시되지 않습니다.

분류에서Dev

asp.net 응용 프로그램의 iPhone 및 iPad에 Tableau 보고서가 표시되지 않음

분류에서Dev

NHibernate 데이터가 다중 스레드 응용 프로그램에서 동기화되지 않았습니다.

분류에서Dev

E4 RCP 응용 프로그램이 더블 클릭 이벤트에서 응답하지 않습니다.

Related 관련 기사

  1. 1

    Spring MVC 응용 프로그램에서 경로 변수를 사용할 때 이미지가 표시되지 않습니다.

  2. 2

    .subscribe가 내 ASP.NET MVC 응용 프로그램에서 작동하지 않습니다.

  3. 3

    내 mvc 응용 프로그램에서 jqgrid의 호출기가 보이지 않습니다.

  4. 4

    응용 프로그램 아이콘 배지가 표시되지 않습니다.

  5. 5

    응용 프로그램에서 이미지가 표시되지 않는 이유

  6. 6

    MVC 4 RedirectToAction에 사용자 지정 헤더가 표시되지 않음

  7. 7

    asp mvc 응용 프로그램의 이미지 폴더에서 이미지를 삭제하면 InternetExplorer에 적용되지 않습니다.

  8. 8

    SlickGrid가 MVC 응용 프로그램에서 SQL 데이터를 표시하지 않음

  9. 9

    ClickOnce에서 '응용 프로그램 ID가 설정되지 않았습니다'

  10. 10

    응용 프로그램에 단추가 표시되지 않습니다. 뭐가 문제 야?

  11. 11

    Ubuntu 18.04 / GNOME 소프트웨어 폴더 그룹이 모든 응용 프로그램 표시에서 존중되지 않습니다.

  12. 12

    HTML 메일 보내기가 일부 응용 프로그램에서는 올바르게 표시되지만 다른 응용 프로그램에서는 표시되지 않습니까?

  13. 13

    OleAutoObj가 내 PC에서 Excel 응용 프로그램을 열지 않습니다.

  14. 14

    Apache Calcite가 웹 응용 프로그램에서 작동하지 않습니다.

  15. 15

    IIS 8에 MVC4 응용 프로그램을 배포 한 후 이미지가로드되지 않고 CSS가 참조되지 않습니다.

  16. 16

    Synaptic Package Manager가 응용 프로그램 메뉴에서 시작되지 않습니다.

  17. 17

    응용 프로그램 충돌 및 토스트 메시지가 표시되지 않습니다

  18. 18

    내 응용 프로그램 폴더에 Xcode 11.1이 표시되지 않음

  19. 19

    User.Claims가 MVC 응용 프로그램에서 비어 있습니다.

  20. 20

    MVC 응용 프로그램이보기에 데이터를 표시하지 않습니다.

  21. 21

    winforms 응용 프로그램에서 메시지 상자가 표시되지 않음 C #

  22. 22

    typescript 및 Phaser.io를 사용하는 Asp.net MVC 응용 프로그램에 이미지가 표시되지 않음

  23. 23

    각도 응용 프로그램에 noUiSlider가 표시되지 않음

  24. 24

    html을 바꾼 후 JQuery .show ()가 MVC 4 응용 프로그램에서 스타일을 지 웁니다.

  25. 25

    암호가 C # 응용 프로그램에서 SQL Server에 제대로 저장되지 않습니다.

  26. 26

    UILabel이 내 응용 프로그램에 표시되지 않습니다.

  27. 27

    asp.net 응용 프로그램의 iPhone 및 iPad에 Tableau 보고서가 표시되지 않음

  28. 28

    NHibernate 데이터가 다중 스레드 응용 프로그램에서 동기화되지 않았습니다.

  29. 29

    E4 RCP 응용 프로그램이 더블 클릭 이벤트에서 응답하지 않습니다.

뜨겁다태그

보관