Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo consente di risolvere il problema in cui i cookie aggiunti da un gestito non sono disponibili per native IHttpModules
o IHttpHandlers
.
Versione originale del prodotto: Internet Information Services
Numero KB originale: 2666571
Sintomi
Quando si usa la Cookies
raccolta da oggetti o gestiti HttpResponse
HttpRequest
per aggiungere un cookie, il cookie non viene visualizzato nell'oggetto nativoIHttpRequest
.
Causa
L'insieme Cookies
negli oggetti gestiti HttpRequest
e HttpResponse
non dispone di una raccolta corrispondente nell'oggetto IHttpRequest
o IHttpResponse
in Internet Information Services (IIS). Pertanto, l'aggiunta o la modifica di una di queste raccolte non modifica l'intestazione Cookie
nell'oggetto IHttpRequest
.
Risoluzione
Per modificare un cookie specifico nell'intestazione dell'oggetto Cookie
nativo IHttpRequest
dal codice gestito, modificare l'intestazione Cookie
direttamente nella raccolta dell'oggetto Header
gestito HttpRequest
anziché tramite la Cookies
raccolta.
Ulteriori informazioni
L'esempio seguente indica che il codice gestito HttpModule
aggiungerà il cookie alle intestazioni nell'oggetto IHttpRequest
nella pipeline IIS.
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace AddCookieModule
{
public class AddCookieClass : IHttpModule
{
private void Application_BeginRequest(Object source EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
HttpCookie testCookie = new HttpCookie("testCookie",
DateTime.Now.ToString());
testCookie.Expires = DateTime.Now.AddYears(5);
context.Request.Headers.Add("Cookie",
"testCookie=" + testCookie.Value);
context.Response.Cookies.Add(testCookie);
}
public void Dispose()
{
// nothing to do.
}
public void Init(HttpApplication context)
{
context.BeginRequest +=
(new EventHandler(this.Application_BeginRequest));
}
}
}