WebRequest.RegisterPrefix()应该放在哪里?

3

这个语句应该放在哪里?我是把它放在构造函数里还是每次进行异步请求时调用一个方法?


你确定你需要它吗?WebRequest.RegisterPrefix是一种很少使用的高级功能。你想要做什么? - SLaks
我只是按照MSDN文档中关于调用返回JSON的远程Web服务的说明进行操作。MSDN说要这样做,但从未指明在哪里进行。 - brian buck
我明白了。我从未使用过Silverlight,所以我不知道那种用法。 - SLaks
3个回答

6

这里有一个讨论的例子。

WebRequest.RegisterPrefix("http://xamlwonderland.com", 
       WebRequestCreator.ClientHttp);

现在我已经调用了RegisterPrefix方法,所有对该子域名(blog.wpfwonderland.com)的后续网络请求都将使用客户端网络堆栈而不是浏览器堆栈。

您可以在代码的任何位置调用RegisterPrefix方法。多次调用此方法并不会有害,尽管根据文档,您每个域只能调用一次。实际上,您的Silverlight应用程序可能会有一些使用浏览器堆栈的网络调用,而另一些则使用客户端堆栈。假设您希望HTTPS流量使用浏览器堆栈,而HTTP流量使用客户端堆栈。

WebRequest.RegisterPrefix("http://":, WebRequestCreator.ClientHttp);
WebRequest.RegisterPrefix("https://", WebRequestCreator.BrowserHttp);

每个网络堆栈都有不同的优点。例如,使用ClientHttp调用REST服务更加容易。以下是一些详细信息:

如何指定浏览器或客户端HTTP处理方式


如果我不指定RegisterPrefix,然后生成一个https请求,会发生什么?像下面这样:HttpWebRequest request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(requestUrl)); - Fabii
我在生产环境中遇到了Arg_NullReferenceException异常,但是我无法在开发环境中复制它。 - Fabii

2

你应该确保只调用一次,可以在静态构造函数中实现。


1
你可以在 App.xaml.cs 中找到 Silverlight 应用程序的 Startup 事件中调用它,如下所示:Application_Startup( object sender, StartupEventArgs e)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接