我正在尝试在Silverlight 2.0中使用HttpWebRequest对象来执行“POST”。
从BeginGetStream方法返回后,我最终得到以下错误:
消息:“不支持指定的方法。”
StackTrace:“在System.Net.BHWRAsyncResult.get_AsyncWaitHandle()”
以下是一些示例代码:注意我已经使用了fiddler来查看是否有任何内容通过网络发送,并且没有网络活动。
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("http://someurl"));
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "text/plain, */*";
req.Headers["X-Requested-With"] = "XMLHttpRequest";
AsyncCallback callBack = new AsyncCallback(streamResponse);
req.BeginGetRequestStream(callBack, null);
谢谢, 戴夫
答案 0 :(得分:4)
我刚刚找到了解决此问题的方案。 HTTP客户端需要知道Content-Length以填充Content-Length HTTP头值。客户无法在知道长度之前启动请求。当您获得RequestStream时,WebRequest无法知道您将向服务器发送多少字节。您必须关闭流以提交Content-Length并且仅在关闭RequestStream之后您可以调用BeginGetResponse。奇怪的是,这并没有在WebRequest中完成。 希望这可以帮助, 梅德
答案 1 :(得分:0)
我刚才遇到过这个问题。在我的头顶:
1)clientaccesspolicy.xml / crossdomain.xml不在您呼叫的服务器上。像闪光灯一样,silverlight不会与没有闪光灯的域名对话。
1.1)fiddler会记录404错误吗?如果没有,您将看不到Silverlight尝试获取这些策略文件的失败尝试。
2)如果不这样做,发送自定义标题可能会令人心烦意乱。
答案 2 :(得分:0)
http://support.microsoft.com/kb/225342
我也试图解决这个问题