博客

共享 传承

导航

silverlight webclient方式请求网页不包含cookie信息问题解决方法

Silverlight读取配置、上传图片等都是使用webclient来处理。发现了webclient请求的时候,有不包含cookie信息的情况,导致页面跳转失败。
 
silverlight 的webclient请求有两种方式,一种是通过浏览器,一种是程序内部处理。这两种方式默认是SL自动选择的。
如果是通过浏览器方式,会包含cookie信息;如果通过应用程序,则不会包含cookie信息。
 
详细如下:
// 摘要:
// 提供对象以便指定是由浏览器还是由客户端来处理 HTTP 请求和响应。
public static class WebRequestCreator
{
// 摘要:
// 获取一个对象,该对象为 Web 请求和响应指定浏览器 HTTP 处理。
//
// 返回结果:
// 一个 System.Net.IWebRequestCreate 对象,该对象为 Web 请求和响应指定浏览器处理。
public static IWebRequestCreate BrowserHttp { get; }
//
// 摘要:
// 获取一个对象,该对象为 Web 请求和响应指定客户端 HTTP 处理。
//
// 返回结果:
// 一个 System.Net.IWebRequestCreate 对象,它与在 Web 浏览器之外运行的基于 Silverlight 的应用程序一起使用。
public static IWebRequestCreate ClientHttp { get; }
}

 

 
为解决这个问题,我们可以设置webclient请求数据的处理方式。设置都通过浏览器方式处理即可。
方法如下:
在请求前,设置请求方式(我们可以在app.xaml.cs中指定即可):
System.Net.WebRequest.RegisterPrefix("http://", WebRequestCreator.BrowserHttp);
System.Net.WebRequest.RegisterPrefix("https://", WebRequestCreator.BrowserHttp);

 

posted on 2013-01-23 16:13  好好学习&&&天天向上  阅读(280)  评论(0编辑  收藏  举报