2

我正在尝试在 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);

谢谢,戴夫

4

2 回答 2

4

我刚刚找到了一个解决这个问题的方法。HTTP 客户端需要知道 Content-Length 来填充 Content-Length HTTP 标头值。在长度已知之前,客户端无法启动请求。当您获得 RequestStream WebRequest 时无法知道您将发送到服务器的字节数。您必须关闭流才能提交 Content-Length,并且只有在关闭 RequestStream 后才能调用 BeginGetResponse。奇怪的是,这不是在 WebRequest 中完成的。希望这会有所帮助,德米特里

于 2009-06-08T14:50:32.727 回答
0

我刚才遇到了这个问题。在我的头顶上:

1) clientaccesspolicy.xml / crossdomain.xml不在您正在调用的服务器上。像 flash 一样,silverlight 不会与没有域的域通信。

1.1) fiddler 是否记录 404 错误?如果没有,您将不会看到 Silverlight 尝试获取这些策略文件的失败尝试。

2)如果做不到这一点,发送您的自定义标头可能会令人不安。

于 2009-03-28T23:26:29.097 回答