2010-11-03 52 views
4

现在我有一个silverlight应用程序,它可以从mvc网站获取数据。只要我使用WebClient和GET请求,一切似乎都没问题。但是,当我使用HttpWebRequest和POST,然后我得到身份验证问题。Silverlight HttpWebRequest无法在头文件中包含.ASPXAUTH Cookie

问题源于缺少.ASPXAUTH cookie的请求。

有谁知道如何解决或解决此问题?

+0

你想在httpRequest的头部传递.ASPXAUTH? – 2010-11-03 17:47:23

+0

必须通过。否则资源将不会返回数据。根据我已阅读的文档,它应该自动执行此操作。这就是当我使用WebClient时的功能。但是,我必须使用HttpWebRequest进行POST。 – 2010-11-03 17:50:57

回答

6

在制作HttpWebRequest对象之前先写下下面的代码。

System.Net.WebRequest.RegisterPrefix(“http://”,WebRequestCreator.BrowserHttp); System.Net.WebRequest.RegisterPrefix(“https://”,WebRequestCreator.BrowserHttp);

然后创建HttpWebRequest对象。

//创建请求
HttpWebRequest的请求= HttpWebRequest.CreateHttp( “http://zainshaikh.posterous.com/”);

希望这会有所帮助。

+0

谢谢。让我检查一下代码。我会测试并提供反馈。 – 2010-11-03 18:02:27

+0

就是这样。谢谢! :)你刚刚让我和一个项目经理非常高兴:) – 2010-11-03 18:47:24

+0

+1),因为这帮助我今天 – Singleton 2010-11-12 06:28:51

1

我最近也得到了这一点。您正在实现基于浏览器的通信和基于Silverlight的通信的分离。当您使用WebClient时,您实际上是通过浏览器的HTTP堆栈发出请求,并因此获得所有自动cookie处理。当您使用HttpWebRequest时,您使用的是Silverlight的HTTP堆栈,因此无法使用发送给浏览器的Cookie;这两个cookie商店是分开的。有关更多详细信息,请参见this article

我正在写出@ Zain的答案,它将HttpWebRequest与浏览器的HTTP堆栈一起注册,并且解决了这个问题,但他把我打败了;-)。

+0

感谢您的链接。我会仔细阅读。在我为Silverlight 2阅读的链接中,它表示WebClient和HttpWebRequest都使用了browswer堆栈。我想这必须在3或4中改变。 – 2010-11-03 18:01:36

+0

考虑投票我的答案,如果你喜欢:) – 2010-11-03 18:04:20