как поддерживать куки между двумя URL в asp.net - PullRequest
0 голосов
/ 28 июня 2011

Мне нужно передать значения cookie в другой URL-адрес, который имеет тот же домен. У меня есть два URL-адреса с одинаковым именем домена. Один URL-адрес для аутентификации, другой - для получения данных. Я выполняю первый URL-адрес, который аутентифицирован. с помощью этого файла cookie аутентификации я хочу выполнить второй URL ..

Как это сделать ... Я не могу добавить cookie в url socond

вот мой код ..

string url = "http://172.16.xx.xxx:8080/cms?login&username=santhu&password=welcome"; строка url1 = "http://172.16.xx.xxx:8080//cms?status=ProcessStatus"; строковый результат = ноль;

    try
    {
        WebClient client = new WebClient();
        WebClient client1 = new WebClient();
        result = client.DownloadString(url);
        TextBox1.Text = result.ToString();

        if (Response.Cookies["JSESSIONID"] != null)
            TextBox1.Text = Server.HtmlEncode(Response.Cookies["JSESSIONID"].Value);             

            client1.Headers.Add("JSESSIONID", TextBox1.Text);
            result = client1.DownloadString(url1);
            TextBox2.Text = result.ToString();

    }
    catch (Exception ex)
    {

    }

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Установите cookie.Domain = "domain.com", и он будет работать на всех URL с этим доменом.

2 голосов
/ 28 июня 2011

Вот что вы можете попробовать. Определите веб-клиент с поддержкой cookie:

public class WebClientEx : WebClient
{
    public CookieContainer CookieContainer { get; private set; }

    public WebClientEx()
    {
        CookieContainer = new CookieContainer();
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).CookieContainer = CookieContainer;
        }
        return request;
    }
}

, а затем использовать этот клиент для обоих запросов:

using (var client = new WebClientEx())
{
    var values = new NameValueCollection
    {
        { "username", "santhu" },
        { "password", "welcome" },
    };
    // Authenticate
    client.UploadValues("http://172.16.xx.xxx:8080/cms?login", values);

    // Download some secure resource
    var result = client.DownloadString("http://172.16.xx.xxx:8080//cms?status=ProcessStatus");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...