2017-12-20 7 views
0

Dieser Code unten auf der Entwicklungsumgebung ausgeführt, aber wenn auf Windows Server 2012 R2 bereitgestellt DsCookie Cookie konnte nicht die Werte aus der Cookie-Erstellung erstellt.Request.Cookie funktioniert nicht nach Bereitstellung auf IIS

Es verwendet MVC 4 mit Entity Framework v4 und 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"]; 
    } 
} 

Weiß jemand, warum meine Lösung nur in einer Entwicklungsumgebung funktioniert und nicht lebt?

Antwort

1

Möglicherweise gibt es einen Unterschied zwischen der Serverzeit und Ihrer Ortszeit.

Der Code

DateTime.Now.AddHours(1); 

nimmt die Serverzeit. Und wenn die Serverzeit 1 Stunde vor Ihrer lokalen PC-Zeit liegt, wird der Cooke sofort erstellt und gelöscht.

überprüfen Sie die Serverzeit, wenn dies der Fall ist, den Zeitablauf ändern wie

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

Oder Sie können genaue Zeitdifferenz und:

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

Dank .... es hat mich den ganzen Tag dieses youre ein Lebensretter zu beheben. Für jetzt setze ich es auf 100 Stunden werde es später ändern – porknbeans

+0

Ich freue mich für dich! –

0

Sie haben nicht eine große Auswahl zur Verfügung gestellt von Informationen also hier ist meine Vermutungen basierend auf was ich mir vorstellen kann.

Überprüfen Sie die IIS-Einstellungen

Unter Ihrer IIS-Einstellungen, den Kopf auf Ihre Website Bereitstellung dann unter dem Panel-Funktionen, navigieren Sie zu IIS> Authentication> Überprüfen Sie die richtigen Authentifizierungsmethoden an der richtigen Stelle. Sie können auch sicherstellen, dass alle Benutzer über Cookie-Authentifizierung

Web.config ermöglichen die Authentifizierung erlauben IIS müssen Cookies schicken Ihnen

Wenn Ihre web.config-Datei nicht korrekt konfiguriert ist, kann es verhindern, dass Ihre Bereitstellung Cookies sendet. Lesen Sie sich durch und überprüfen Sie, ob IIS sie senden kann.

versuchen, wie so ein Tag Zugabe

Wenn Sie es könnte nicht ein Cookie erhalten, sein, dass das Cookie sofort gelöscht wird? Es ist selten, aber es passiert. dies zu tun Versuchen Sie stattdessen:

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

Dies sollte das Cookie persistieren machen

Überprüfen Sie die Datetime-Server

korrekt ist, wenn es nicht das ist sehr gut die Wurzel des Problems sein könnte. Es klingt albern, aber es war in der Vergangenheit für einige ein legitimes Problem.

Stellen Sie sicher, Ihrem Browser Wenn Sie das Cookie

Cookies akzeptiert alle Optionen in Ihrem Browser ablehnen, das Sie an der Annahme der Anmeldung verhindern und daher wird es fast, als ob Sie sich nicht anmelden können in.

Wenn Sie nach diesen Korrekturen immer noch Probleme haben, teilen Sie uns dies bitte mit und geben Sie ein wenig mehr Details an, damit wir Ihnen helfen können, das Problem einzugrenzen.


Als zusätzliche Anmerkung, das ist ein viel besser (und sauberer) Art und Weise, dies zu tun:

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

Response.Cookies.Add(dsCookie); 
Verwandte Themen