方法: オンライン ClickOnce アプリケーションでクエリ文字列の情報を取得するHow to: Retrieve query string information in an online ClickOnce application

クエリ文字列 とは、URL のうちの疑問符 (?) で始まる部分であり、 name=valueの形式で任意の情報を記述します。The query string is the portion of a URL beginning with a question mark (?) that contains arbitrary information in the form name=value. たとえば、 ClickOnceClickOnce でホストされている WindowsApp1 という servernameアプリケーションがあり、このアプリケーションを起動するときに、 username という変数に値を渡すとします。Suppose you have a ClickOnceClickOnce application named WindowsApp1 that you host on servername, and you want to pass in a value for the variable username when the application launches. URL は次のようになります。Your URL might look like the following:

http://servername/WindowsApp1.application?username=joeuser

以下の 2 つの手順では、 ClickOnceClickOnce アプリケーションを使用してクエリ文字列の内容を取得する方法を説明します。The following two procedures show how to use a ClickOnceClickOnce application to obtain query string information.

Note

クエリ文字列で情報を渡すことができるのは、ファイル共有やローカル ファイル システムではなく HTTP を使用してアプリケーションが起動しているときだけです。You can only pass information in a query string when your application is being launched using HTTP, instead of using a file share or the local file system.

まず、 ClickOnceClickOnce アプリケーションで短いコードを使用して、アプリケーションの起動時にクエリ文字列の値を読み取る方法について説明します。The first procedure shows how your ClickOnceClickOnce application can use a small piece of code to read these values when the application launches.

次に、MageUI.exe を使用して、クエリ文字列パラメーターを受け入れることができるように ClickOnceClickOnce アプリケーションを構成する方法について説明します。The next procedure shows how to configure your ClickOnceClickOnce application using MageUI.exe so that it can accept query string parameters. これは、アプリケーションを発行するたびに実行する必要があります。You will need to do this whenever you publish your application.

Note

この機能を有効にする前に、この後の「セキュリティ」を参照してください。See the "Security" section later in this topic before you make a decision to enable this feature.

作成する方法については、ClickOnceClickOnceを使用して展開Mage.exeまたはMageUI.exeを参照してくださいチュートリアル。ClickOnce アプリケーションを手動で展開します。For information about how to create a ClickOnceClickOnce deployment using Mage.exe or MageUI.exe, see Walkthrough: Manually deploy a ClickOnce application.

Note

.NET Framework 3.5 SP1 以降では、オフラインの ClickOnceClickOnce アプリケーションにコマンド ライン引数を渡すことができます。Starting in .NET Framework 3.5 SP1, it is possible to pass command-line arguments to an offline ClickOnceClickOnce application. このアプリケーションに引数を提供する場合は、.APPREF-MS 拡張子を持つショートカット ファイルにパラメーターを渡すことができます。If you want to supply arguments to the application, you can pass in parameters to the shortcut file with the .APPREF-MS extension.

ClickOnce アプリケーションでクエリ文字列を取得するにはTo obtain query string information from a ClickOnce application

  1. プロジェクト内に次のコードを記述します。Place the following code in your project. このコードが機能するためには、System.Web への参照を設定し、System.Web、System.Collections.Specialized、および System.Deployment.Application に対して using ステートメントまたは Imports ステートメントを追加する必要があります。In order for this code to function, you will have to have a reference to System.Web and add using or Imports statements for System.Web, System.Collections.Specialized, and System.Deployment.Application.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
    Private Function GetQueryStringParameters() As NameValueCollection
        Dim NameValueTable As New NameValueCollection()
    
        If (ApplicationDeployment.IsNetworkDeployed) Then
            Dim QueryString As String = ApplicationDeployment.CurrentDeployment.ActivationUri.Query
            NameValueTable = HttpUtility.ParseQueryString(QueryString)
        End If
    
        GetQueryStringParameters = NameValueTable
    End Function
    
  2. 定義済みの関数を呼び出して、名前でインデックス化された、クエリ文字列パラメーターの Dictionary を取得します。Call the function defined previously to retrieve a Dictionary of the query string parameters, indexed by name.

MageUI.exe を使用して ClickOnce アプリケーションでクエリ文字列の受け渡しを有効にする方法To enable query string passing in a ClickOnce application with MageUI.exe

  1. .NET Framework のコマンド プロンプトを開き、次のように入力します。Open the .NET Command Prompt and type:

    MageUI
    
  2. [ファイル] メニューの [開く] をクリックし、対象の ClickOnceClickOnce アプリケーションの配置マニフェストを開きます。配置マニフェスト ファイルの拡張子は .application です。From the File menu, select Open, and open the deployment manifest for your ClickOnceClickOnce application, which is the file ending in the .application extension.

  3. 左側のナビゲーション ウィンドウにある [配置オプション] パネルをクリックし、 [URL パラメーターをアプリケーションに渡すことを許可する] チェック ボックスをオンにします。Select the Deployment Options panel in the left-hand navigation window, and select the Allow URL parameters to be passed to application check box.

  4. [ファイル] メニューの [保存] をクリックします。From the File menu, select Save.

Note

または、 Visual StudioVisual Studioでクエリ文字列を渡すことができるようにすることもできます。Alternately, you can enable query string passing in Visual StudioVisual Studio. [URL パラメーターをアプリケーションに渡すことを許可する] チェック ボックスをオンにします。このチェック ボックスは、 [プロジェクトのプロパティ] を開いて [発行] タブをクリックし、 [オプション] ボタンをクリックして [マニフェスト] を選択すると表示されます。Select the Allow URL parameters to be passed to application check box, which can be found by opening the Project Properties, selecting the Publish tab, clicking the Options button, and then selecting Manifests.

信頼性の高いプログラミングRobust programming

クエリ文字列パラメーターを使用する場合は、アプリケーションがどのようにインストールされ、アクティブ化されるかを十分に考慮する必要があります。When you use query string parameters, you must give careful consideration to how your application is installed and activated. アプリケーションが、Web またはネットワーク共有からユーザーのコンピューターにインストールされるように構成されている場合は、ユーザーが一度だけ URL を通じてアプリケーションをアクティブにすることが予想されます。If your application is configured to install on the user's computer from the Web or from a network share, it is likely that the user will activate the application only once through the URL. その後ユーザーは、ほとんどの場合、 [スタート] メニューのショートカットを使用してアプリケーションをアクティブにします。After that, the user will usually activate your application using the shortcut in the Start menu. その結果、アプリケーションはその有効期間中に一度だけクエリ文字列引数を受け取ることが保証されます。As a result, your application is guaranteed to receive query string arguments only once during its lifetime. これらの引数を後から使用できるようにユーザーのコンピューターに格納する場合は、それらが安全かつ確実に格納されるようにする必要があります。If you choose to store these arguments on the user's machine for future use, you are responsible for storing them in a safe and secure manner.

アプリケーションがオンラインでのみ使用される場合は、常に URL を通じてそのアプリケーションがアクティブ化されます。If your application is online only, it will always be activated through a URL. ただしその場合でも、クエリ文字列パラメーターが失われたり壊れたりしても正しく機能するようにアプリケーションを作成する必要があります。Even in this case, however, your application must be written to function properly if the query string parameters are missing or corrupted.

.NET Framework のセキュリティ.NET Framework security

悪意のある文字の入力を使用前に削除する予定である場合にのみ、 ClickOnceClickOnce アプリケーションに URL パラメーターを渡すことができるようにしてください。Allow passing URL parameters to your ClickOnceClickOnce application only if you plan to cleanse the input of any malicious characters before using it. たとえば、引用符、スラッシュ、またはセミコロンが埋め込まれた文字列を、フィルターしないままデータベースに対する SQL クエリに使用すると、任意のデータ操作が行われる可能性があります。A string embedded with quotes, slashes, or semicolons, for example, might perform arbitrary data operations if used unfiltered in a SQL query against a database. クエリ文字列のセキュリティの詳細については、「Script Exploits Overview」を参照してください。For more information on query string security, see Script exploits overview.

関連項目See also