Почему при повторном вызове той же функции Httprequest возникает сообщение «Cookies Disabled»?

Чтобы обойти проблему с отключенными файлами cookie, я использую CookieContainer myContainer = новый CookieContainer (); request.CookieContainer = myContainer; Это работает при первом вызове функции getIDfromWeb. Однако при повторном вызове функции getIDfromWeb происходит отключение файлов cookie. Как мне обойти эту проблему? Чтобы воспроизвести ту же проблему, вы должны столкнуться с проблемой «Файлы cookie отключены», если вы не включаете «request.CookieContainer = myContainer;» в противном случае ваш URL может не нуждаться в аутентификации. Хотя я могу получить информацию, поместив свой URL-адрес в адресную строку IE и нажав клавишу ВВОД, я столкнулся с ошибкой авторизации при реализации этого с C#. Я использую httpwebrequest и файлы cookie для решения проблемы, но обнаружил, что столкнулся с проблемой «Файлы cookie отключены», когда вызвал функцию во второй раз.

       using System;
        using System.Collections.Generic;
        using System.IO;
        using System.Linq;
        using System.Net;
        using System.Text;
        using System.Threading.Tasks;

        namespace ConsoleApplication3
        {
            class Program
            {
                const string baseURL = "http://intranet/rest/reserveid.php";
                 static void Main(string[] args)
                {

                    Console.WriteLine("Key1 sample:");
                    Console.WriteLine(getIDfromWeb("key1"));
                    Console.WriteLine("key1. sample2:");
                    Console.WriteLine(getIDfromWeb("key1"));
                    Console.ReadKey();
                }
                static string getIDfromWeb(string idType)
                {
                    int startPos = 0;
                    string url = "";
                    switch (idType)
                    {
                        case "key1":
                            startPos = 19;
                            url = baseURL + "?querystringforkey1";
                            break;
                        case "key2":
                            startPos = 15;
                            url = baseURL + "?querystringforkey2";
                            break;
                    }

                    CookieContainer myContainer = new CookieContainer();
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.Credentials = CredentialCache.DefaultNetworkCredentials;
                    request.CookieContainer = myContainer;
                    request.PreAuthenticate = true;
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    var dataStream = response.GetResponseStream();
                    // Open the stream using a StreamReader for easy access.
                    StreamReader reader = new StreamReader(dataStream);
                    // Read the content.
                    string responseFromServer = reader.ReadToEnd();
                    // Display the content.
                    reader.Close();
                    response.Close();
                    return responseFromServer.Substring(startPos, (responseFromServer.IndexOf("}]") - startPos - 1));

                }
            }
        }

Привет, зачем удалять этот пост? Мой комментарий решает вашу проблему? Если да, не могли бы вы отменить удаление сообщения? Я хочу опубликовать ответ, у меня есть другое решение для этого.

Joy Wang 14.02.2020 04:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
31
1

Ответы 1

Это работа для меня.

Здесь обновлен ваш код, пожалуйста, проверьте.

static void Main(string[] args)
    {
        Console.WriteLine("Key1 sample:");
        Console.WriteLine(getIDfromWeb("key1"));
        Console.WriteLine("key1. sample2:");
        Console.WriteLine(getIDfromWeb("key2"));
        Console.ReadKey();
    }

Заменить строку ниже

Console.WriteLine(getIDfromWeb("key2"));

Встречаете ли вы ошибку «Файлы cookie отключены» при первом вызове getIDfromWeb, если вы не включаете request.CookieContainer = myContainer в getIDfromWeb? В моем случае, использую ли я getIDfromWeb («key2») или getIDfromWeb («key1») или вызываю getIDfromWeb снова через долгое время, я получаю ошибку «Файлы cookie отключены» при повторном вызове getIDfromWeb. При первом вызове getIDfromWeb ошибок не произошло.

Learner 02.04.2018 21:30

Вы уверены, что ваш URL-адрес требует аутентификации? Мой URL-адрес требует аутентификации, хотя я могу поместить URL-адрес в адресную строку Интернета и получить информацию. Когда я реализую его с C#, я получаю ошибку аутентификации, поэтому я использую файлы cookie для ее решения.

Learner 02.04.2018 21:42

Сначала проверьте тайм-аут файлов cookie. В первый раз работает, а во второй - нет. Это означает, что в вашем другом внутреннем коде очищаются «куки».

Niteen 04.04.2018 14:40

Другие вопросы по теме