开发者

Silverlight 4.0 - HttpWebRequest throwing ProtocolViolationException

I am getting a "System.Net.ProtocolViolat开发者_运维技巧ionException: Operation is not valid due to the current state of the object." error when trying to call

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

 request.Method = "GET";

 request.ContentType = "text/xml";

 request.BeginGetRequestStream(RequestCompleted, request);


I suspect this may be because you are performing a BeginGetRequestStream on a request object for which you have specified the "GET" method.

When performing a "GET" the server will not be expecting an entity body in the request hence you should proceed straight to BeginGetResponse. Also specifying a ContentType on the request is not necessary, it specifies the type of content being sent in the entity body of the request but as stated a "GET" doesn't send any content it only gets content.


I disagree with AnthonyWJones answer. I find nothing in the HTTP spec that prohibits a "GET" request from containing a message body. I think this has unfortunately become the de facto understanding of how HTTP works since there is generally no need (or way) to include a message body. Having said that, he is correct as to the cause of this specific exception. However, I think the BCL should be changed to allow it.

If anyone can point it out I would be very interested to know where the spec precludes this: HTTP RFC 2616

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜