Аутентификация веб-запроса путем добавления ошибки "Куки выдает"

На моем веб-сайте я использую проверку подлинности с помощью форм. И для этого я хочу сделать веб-запрос. Я пользуюсь cookieContainer. Мой код

 string url = HttpContext.Current.Request.Url.AbsoluteUri;
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
    Cookie authenticationCookie = new Cookie(
        FormsAuthentication.FormsCookieName,
        cookie.Value,
        cookie.Path,
       HttpContext.Current.Request.Url.Authority);
    req.CookieContainer = new CookieContainer();
    req.CookieContainer.Add(authenticationCookie);
    WebResponse res = req.GetResponse();

но этот код выдает ошибку "Недопустимая часть файла cookie" Domain "=" localhost:300 "." Таким образом, я обнаружил, что ошибка происходит из этой строки кода

Cookie authenticationCookie = new Cookie(
    FormsAuthentication.FormsCookieName,
    cookie.Value,
    cookie.Path,
   HttpContext.Current.Request.Url.Authority);

URL сайта - localhost:300. Я не могу найти никакого решения для этого. Кто-нибудь может сказать мне, что пошло не так?

1 ответ

Решение

Попробуйте исключить номер порта из свойства домена, которое вы передаете конструктору Cookie:

Cookie authenticationCookie = new Cookie(
    FormsAuthentication.FormsCookieName,
    cookie.Value,
    cookie.Path,
    HttpContext.Current.Request.Url.Host
);

или установите cookie как заголовок HTTP напрямую, без использования контейнера cookie:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
req.Headers[HttpRequestHeader.Cookie] = string.Format("{0}={1}", cookie.Name, cookie.Value);
WebResponse res = req.GetResponse();
Другие вопросы по тегам