HttpWebRequest cookie avec vide de domaine

J'ai un ASP.NET MVC action qui envoie une requête à un autre serveur via HttpWebRequest. J'aimerais inclure tous les cookies dans l'action initiale de la demande dans la nouvelle demande. Une partie du Système.Web.HttpCookies dans la demande initiale ont vide les valeurs de domaine (c'est à dire ""), qui, apparemment, ne cause pas de problèmes. Lorsque je créer un Système.Net.Cookie en utilisant le nom, la valeur, le chemin d'accès, et de domaine de chacun de ces cookies et l'ajouter à la demande du CookieContainer, j'obtiens cette erreur:

"Du système.ArgumentException: Le paramètre "{0} " ne peut pas être une chaîne vide. Nom du paramètre: cookie.Le domaine"

Voici un code qui va lancer la même erreur (lorsque le cookie est ajouté):

var request = (HttpWebRequest)WebRequest.Create("http://www.whatever.com");
request.Method = "GET";
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add ( new Cookie ( "MyCookieName", "MyCookieValue", "/", "") );

MODIFIER

Je sorte de fixée à l'aide de "localhost" pour le domaine, au lieu de la valeur null ou une chaîne vide, la valeur de l'original HttpCookie. Donc, pourquoi un vide de domaine fonctionne pas pour le CookieContainer? Et ne HttpCookie utiliser une valeur vide pour indiquer localhost, ou dois-je trouver une autre solution à ce problème?

Qu'est-ce exactement que vous essayez de faire? La définition d'un cookie avec le domaine "localhost" sur le récipient lorsque vous envoyez la demande à un autre serveur ne fonctionne pas - le cookie ne sera pas envoyé. Si vous pouvez décrire votre scénario et de ce que vous essayez d'atteindre, peut-être une meilleure solution sera de révéler à lui-même.
On dirait que vous êtes la construction d'un contournement de la page -- probablement pour le cross-site scripting? Je vais poster une réponse ci-dessous avec quelques informations de fond. Pour l'instant découvrez en.wikipedia.org/wiki/HTTP_cookie pour obtenir de la façon dont il fonctionne. Le nom de domaine est très important.
a une bonne réponse ci-dessous qui fonctionne, tout simplement. Je suis venu à la même conclusion dans mes tests avant de trouver sa réponse. En gros: demande.Les en-têtes.Ajouter(HttpRequestHeader.Cookie, "MyCookieName=MyCookieValue");

OriginalL'auteur MikeWyatt | 2010-12-16