当前位置:编程学习 > C#/ASP.NET >>

谁知道怎么读取session吗?

需要下载一个文件,这个文件需要用户名密码验证。
我用webclient进行下载的时候就会出错,有谁知道这种情况怎么解决吗?
能不能让我的程序读取出来当前session里的信息?然后加载到我的webclient的httprequest里面

或者说,如果我知道用户名和密码,怎么填写进去?

我这里有些code,不过貌似不能用
没有验证的时候下载没问题
请帮我看看吧。
给点hint也好
private void download()
        {
            CookieWebClient web = new CookieWebClient();
            Uri uri = new Uri("http://www.xxxxxxxxxxxxxxx.com/admin/products/export");
            web.Cookies = PCTools.CookieManger.GetUriCookieContainer(uri);
            string local = "product.csv";
            try
            {
                web.DownloadFile(uri, local);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
}


public class CookieWebClient : WebClient
{
    // Cookie 容器
    private CookieContainer cookieContainer;

    /// <summary>
    /// 创建一个新的 WebClient 实例。
    /// </summary>
    public CookieWebClient()
    {
        this.cookieContainer = new CookieContainer();
    }

    /// <summary>
    /// 创建一个新的 WebClient 实例。
    /// </summary>
    /// <param name="cookie">Cookie 容器</param>
    public CookieWebClient(CookieContainer cookies)
    {
        this.cookieContainer = cookies;
    }

    /// <summary>
    /// Cookie 容器
    /// </summary>
    public CookieContainer Cookies
    {
        get
        {
            return this.cookieContainer;
        }
        set
        {
            this.cookieContainer = value;
        }
    }

    /// <summary>
    /// 返回带有 Cookie 的 HttpWebRequest。
    /// </summary>
    /// <param name="address"></param>
    /// <returns></returns>
    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            HttpWebRequest httpRequest = request as HttpWebRequest;
            httpRequest.CookieContainer = cookieContainer;
        }
        else
        {
            Debug.Assert(false, "不是HttpWebRequest");
        }
        return request;
    }

}

public class CookieManger
    {
        [DllImport("wininet.dll", SetLastError = true)]
        public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size);

        public static CookieContainer GetUriCookieContainer(Uri uri)
        {
            CookieContainer cookies = null;
            //定义Cookie数据的大小。
            int datasize = 256;
            StringBuilder cookieData = new StringBuilder(datasize);

            if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize))
            {
                if (datasize < 0) return null;
                // 确信有足够大的空间来容纳Cookie数据。
                cookieData = new StringBuilder(datasize);
                if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) return null;
            }

            if (cookieData.Length > 0)
            {
                cookies = new CookieContainer();
                cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
            }
            return cookies;
        }
    }
}[
--------------------编程问答-------------------- upup --------------------编程问答-------------------- 顶起来 --------------------编程问答-------------------- 使用cookie的思路还是没有问题的。 --------------------编程问答-------------------- System.Web.SessionState.HttpSessionState mys=HttpContext.Current.Session; 
mys["username"] --------------------编程问答-------------------- Fiddler2 提供了免费的API, 我想对你的这个可能会有些帮助。抓cookie。 --------------------编程问答-------------------- 顶起来,等待高人解决 --------------------编程问答-------------------- 自己顶~~
--------------------编程问答-------------------- ?
你到底是要读取session  还还是cookie
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,