1

从 Silverlight 3.0 发出 HttpRequest 时,我无法设置任何 HTTP 标头值?

Silverlight 3.0 是否支持 HTTP 标头?

以下代码在调用请求回调时抛出异常:

        var url = new Uri("http://lonmw32795/RBSM_Portal_RESTfulWebService/HostInterrogationService.svc/host/environment");
        req = (HttpWebRequest)WebRequest.Create(url);
        req.Headers[HttpRequestHeader.Pragma] = "no-cache";
        req.Method = "GET";

        req.BeginGetResponse(new AsyncCallback(WebComplete), req);    

异常类型是 System.NotSupportedException - WTF!

有人有什么想法吗?

干杯

AWC

4

2 回答 2

2

请注意WebHeaderCollection的文档,大多数有用的标头都受到限制,它没有列出 pragma,但它还说受限制的标头不限于提供的列表。

这些限制已经到位,因为底层浏览器通常会处理 http 请求,因此它会使用自己的算法控制这些标头。

可以像这样使用 ClientHttp 执行此操作:-

    var url = new Uri("http://lonmw32795/RBSM_Portal_RESTfulWebService/HostInterrogationService.svc/host/environment");
    req = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(url);

请注意,您将需要手动管理所需的任何 cookie,如果将 cookie 设置为对使用 BrowserHttp 的请求的响应的一部分,这可能会有点棘手。

于 2010-02-16T13:46:44.000 回答
0

简单的答案是否定的——如果你想创建一个 HttpRequest ,你必须使用 WebRequestCreator 类。

查看博客文章了解更多信息。

于 2010-02-16T12:09:59.180 回答