2017-12-20 3 views
0

이 코드는 개발 환경에서 실행되지만 Windows Server 2012 R2에 배포하면 DsCookie 쿠키가 쿠키 만들기에서 만들어진 값을 가져올 수 없습니다.IIS에서 배포 한 후 Request.Cookie가 작동하지 않습니다.

MVC 4와 Entity Framework v4 및 jQuery를 사용합니다.

HttpCookie ds_id = new HttpCookie("ds"); 
ds_id.Value = reqCookie.ToString(); 
ds_id.Expires = DateTime.Now.AddHours(1); 
Response.SetCookie(ds_id); 
       Response.Flush(); 

private HttpCookie DsCookie 
{ 
    get 
    { 
     return Request.Cookies["ds"]; 
    } 
} 

내 솔루션이 개발 환경에서만 작동하며 살아 있지 않은 이유를 아는 사람이 있습니까?

답변

1

서버 시간과 현지 시간이 다를 수 있습니다.

코드

DateTime.Now.AddHours(1); 

서버의 시간이 걸립니다. 그리고 서버 시간이 로컬 pc 시간보다 1 시간 빠르면 cooke가 즉시 작성되고 삭제됩니다. 이 경우 경우

확인 서버 시간,

ds_id.Expires = DateTime.Now.AddHours(10); //Or more. 

같은 만료 시간을 변경하거나 정확한 시간 차이와 수 :

ds_id.Expires = DateTime.Now.AddHours(1 + time difference between the server and your local time); 
+0

덕분에 .... 그것은이 개봉에게 생명의 은인를 해결하기 위해 하루 종일이 걸렸다. 지금은 100 시간으로 설정하면 나중에 바뀔거야 – porknbeans

+0

너에게 행복해! –

0

당신은 큰 다양성을 제공하지 않은 정보의 그래서 여기에 내가 생각할 수있는 것을 기반으로 내 추측이야.

는 장소에 올바른 인증 방법을 확인> IIS> 인증으로 이동하는 기능 패널에서 다음 웹 사이트를 배포하려면 IIS 설정에서 머리를 당신의 IIS 설정

을 확인합니다. 당신은 또한 당신이 모든 사용자의 Web.config은 IIS가 당신에게 쿠키를 보낼 수 있도록 허용해야

쿠키 인증을 통해 인증 할 수 있도록되어 있는지 확인 할 수

당신의 web.config 파일이 제대로 설정되지 않은 경우, 월 귀하의 배포가 쿠키를 보내지 못하게하십시오. 읽어서 IIS가 그들을 보낼 수 있는지 확인하십시오. 추가

보십시오 당신이 쿠키를받지 못한 경우 너무

같은 하루, 그것은 쿠키가 즉시 삭제됩니다 될 수 있을까? 드문 일이지만, 그런 일이 발생합니다. 그것은이 아주 잘 문제의 근본이 될 수없는 경우 서버의 날짜가

올바른지 확인

ds_id.Expires = DateTime.Now.AddDays(1d); 

이 쿠키를해야

을 지속 : 대신이 일을보십시오. 그것은 어리석은 것처럼 들리지만, 일부에서는 과거에는 합법적 인 문제였습니다.

쿠키를 거부하도록 브라우저에있는 옵션이있는 경우,이 로그인을 수용하지 못할 것입니다 당신이 로그인 할 수없는 경우에 따라서는 거의 될 것입니다 귀하의 브라우저가 쿠키를 허용해야합니다 in.

수정 된 후에도 문제가 계속되면 Google에 알려 주시고 자세한 내용을 알려 주시면 문제의 범위를 좁히는 데 도움이 될 것입니다. 추가 참고로


, 이것은이 일을 더 나은 (클리너) 방법 :

var dsCookie = new HttpCookie("dsCookie") 
{ 
    Value = reqCookie.ToString(), 
    Expires = DateTime.Now.AddHours(1) 
}; 

Response.Cookies.Add(dsCookie); 
관련 문제