情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

WebRequestExtensions.SetNetworkPreference メソッド

2013/12/12

携帯電話技術または携帯電話以外の技術に使う Web 要求の優先順位を設定します。

Namespace:  Microsoft.Phone.Net.NetworkInformation
アセンブリ:  Microsoft.Phone (Microsoft.Phone.dll 内)

public static void SetNetworkPreference(
	this WebRequest request,
	NetworkSelectionCharacteristics preference
)

パラメーター

request
型: System.Net.WebRequest
優先順位を設定する Web 要求。
preference
型: Microsoft.Phone.Net.NetworkInformation.NetworkSelectionCharacteristics
優先されるテクノロジの種類を指定する列挙値の 1 つ。

使用上の注意

Visual Basic および C# では、このメソッドを、WebRequest 型の任意のオブジェクトのインスタンス メソッドとして呼び出すことができます。インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。

例外条件
ArgumentNullException

requestnull です。

NetworkException

request の HTTP 要求ハンドルを取得できません。

NetworkException

request のセッション ハンドルを取得できません。

NetworkException

ネットワークの優先順位を設定できません。

このメソッドは、BeginGetResponse の呼び出し前に呼び出す必要があります。そうしない場合は、InvalidOperationException がスローされます。

拡張メソッドの詳細については、「拡張メソッド (C# プログラミング ガイド)」または「方法: 拡張メソッドを呼び出す (Visual Basic)」を参照してください。

SetNetworkPreference 拡張メソッドを使用する方法を次のコード例に示します。この例では、優先されるネットワーク インターフェイスは Cellular です。携帯ネットワーク インターフェイスが使用できない場合、別のネットワーク インターフェイスが使用されます。GetCurrentNetworkInterface は、使用されたネットワーク インターフェイスを判断するために、要求コールバックで呼び出されます。


private void StartDownload()
{
   HttpWebRequest request;

   // A NetworkException with the error NetworkError.WebRequestAlreadyFinished will
   // be thrown if GetCurrentNetworkInterface is called after the request is complete.
   // The uri string used here is for illustration purposes only. It may complete before
   // you call GetCurrentNetworkInterface. Replace this with a longer-running request if needed.
   request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/example.aspx");
   request.AllowReadStreamBuffering = false;

   // Our preference, for this example, is a cellular network interface. 
   // Call SetNetworkPreference on an HttpWebRequest before calling BeginGetResponse or
   // an InvalidOperationException will be thrown.
   request.SetNetworkPreference(NetworkSelectionCharacteristics.Cellular);
   IAsyncResult result = (IAsyncResult)request.BeginGetResponse(new AsyncCallback(response_Callback), request);                     
}       

private void response_Callback(IAsyncResult asyncResult)
{                      
   HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;

   // Check to see what network interface is being used. 
   // The call to GetCurrentNetworkInterface must be invoked on the UI thread.
   Dispatcher.BeginInvoke(() =>
   {
      try
      {
         NetworkInterfaceInfo ni = request.GetCurrentNetworkInterface();

      // If a cellular interface was available, we should see that here, since that was our
      // preference. Otherwise, we will get a different network interface type, such as Ethernet
      System.Diagnostics.Debug.WriteLine(ni.InterfaceType.ToString());    
      }
      catch (NetworkException networkException)
      {
         // If the HttpWebRequest was not long running, then this exception will be thrown for
         // the GetCurrentNetworkInterface above.
         if (networkException.NetworkErrorCode == NetworkError.WebRequestAlreadyFinished)
         {
            System.Diagnostics.Debug.WriteLine("Cannot call GetCurrentNetworkInterface if the web request is already complete");
         }
      }
   });       
}               
 

Windows Phone OS

サポート: 8.0, 7.1

表示: