Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 4.0-HttpWebRequest引发ProtocolViolationException异常_Silverlight_Httpwebrequest_Silverlight 4.0_Get - Fatal编程技术网

Silverlight 4.0-HttpWebRequest引发ProtocolViolationException异常

Silverlight 4.0-HttpWebRequest引发ProtocolViolationException异常,silverlight,httpwebrequest,silverlight-4.0,get,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); 我怀疑这可能

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

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

 request.Method = "GET";

 request.ContentType = "text/xml";

 request.BeginGetRequestStream(RequestCompleted, request);

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


执行“GET”时,服务器不希望请求中包含实体主体,因此您应该直接进入
开始响应
。另外,在请求上指定
ContentType
也不是必需的,它指定了在请求的实体体中发送的内容类型,但如前所述,“GET”不发送任何内容,它只获取内容。

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

如果有人能指出这一点,我很想知道规范在哪里排除了这一点:

在使用Google Chrome的开发者工具检查网络流量时,我发现Web服务器根目录上托管的clientaccesspolicy.xml没有被检索。那么我该如何处理PUT或DELETE?@cmaduro:Well PUT(DELETE也没有实体主体)是您将使用
BeginGetRequestStream
的地方,但是您需要使用ClientHTTP堆栈,因为BrowserHTTP堆栈仅支持GET和POST