2010-09-21 65 views
2

这个陈述去哪里?我是否会将其放入构造函数中,或者每次发出异步请求时都使用方法调用它?去哪里WebRequest.RegisterPrefix()

+0

你确定你需要它吗? 'WebRequest.RegisterPrefix'是一个很少使用的高级功能。你想做什么? – SLaks 2010-09-21 19:10:41

+0

我只是关注如何调用返回json的远程web服务的MSDN文档。 MSDN说这样做,但从来没有说过在哪里。 – 2010-09-21 19:18:39

+0

我明白了。我从来没有使用Silverlight,所以我没有意识到这种用法。 – SLaks 2010-09-21 20:11:02

回答

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服务更容易。这里还有一些细节:

How to: Specify Browser or Client HTTP Handling

+0

如果我不指定RegisterPrefix然后生成类似以下的https请求,会发生什么情况:HttpWebRequest request =(HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(requestUrl)); – Fabii 2016-05-06 16:41:50

+0

我askl正在看到一个Arg_NullReferenceException发生在生产中,但我无法复制它的开发。 – Fabii 2016-05-06 16:43:27

2

你应该只调用一次,或许在一个静态构造函数中。

1

你可以把它在App.xaml.cs发现为Application_Startup(object sender, StartupEventArgs e)您的Silverlight应用程序的启动事件。