Silverlight 4.0 - HttpWebRequest抛出ProtocolViolationException

时间:2010-06-01 20:52:18

标签: silverlight httpwebrequest silverlight-4.0 get

我收到“System.Net.ProtocolViolationException:由于对象的当前状态,操作无效。”尝试呼叫时出错

 var request = (HttpWebRequest)WebRequest.Create(uri);

 request.Method = "GET";

 request.ContentType = "text/xml";

 request.BeginGetRequestStream(RequestCompleted, request);

2 个答案:

答案 0 :(得分:6)

我怀疑这可能是因为您正在为您指定了“GET”方法的请求对象执行BeginGetRequestStream

执行“GET”时,服务器不会期望请求中有实体主体,因此您应该直接进入BeginGetResponse。同样在请求中指定ContentType是不必要的,它指定在请求的实体主体中发送的内容的类型,但如上所述,“GET”不发送任何仅获取内容的内容。

答案 1 :(得分:0)

我不同意AnthonyWJones的回答。我在HTTP规范中没有发现禁止“GET”请求包含消息体的任何内容。我认为不幸的是,这已成为事实上理解HTTP的工作方式,因为通常不需要(或方式)包含消息体。话虽如此,他对这个特定例外的原因是正确的。但是,我认为应该改变BCL以允许它。

如果有人能指出来,我会非常有兴趣知道规范排除了这个: HTTP RFC 2616