Share via


方法 : ClickOnce アプリケーションでクエリ文字列を取得する

更新 : 2007 年 11 月

クエリ文字列とは、URL のうちの疑問符 (?) で始まる部分であり、name=value の形式で任意の情報を記述します。たとえば、servername でホストされている WindowsApp1 という ClickOnce アプリケーションがあり、このアプリケーションを起動するときに、変数 username に値を設定する場合を考えます。入力する URL は次のようになります。

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

以下の 2 つの手順では、ClickOnce アプリケーションを使用してクエリ文字列の内容を取得する方法を説明します。

最初の手順では、MageUI.exe を使用して、クエリ文字列パラメータを渡すことができるように ClickOnce アプリケーションを構成する方法について説明します。

ms172242.alert_note(ja-jp,VS.90).gifメモ :

この機能を有効にする前に、この後の「セキュリティ」を参照してください。

その次の手順では、ClickOnce アプリケーションで短いコードを使用して、アプリケーションの最初の起動時にクエリ文字列の値を読み取る方法について説明します。

Mage.exe または MageUI.exe を使用して ClickOnce 配置を作成する方法については、「チュートリアル : ClickOnce アプリケーションを手動で配置する」を参照してください。

ms172242.alert_note(ja-jp,VS.90).gifメモ :

ClickOnce アプリケーションにコマンド ライン引数を渡すことはできません。このアプリケーションに引数を提供する場合は、アプリケーションを Web 上に配置し、URL にクエリ文字列パラメータを入力する必要があります。

MageUI.exe を使用して ClickOnce アプリケーションでクエリ文字列の受け渡しを有効にする方法

  1. .NET Framework のコマンド プロンプトを開き、次のように入力します。

    MageUI
    
  2. [ファイル] メニューの [Open] をクリックし、対象の ClickOnce アプリケーションの配置マニフェストを開きます。配置マニフェスト ファイルの拡張子は .application です。

  3. ナビゲーション ウィンドウの左の [配置オプション] パネルをクリックし、[URL パラメータをアプリケーションに渡すことを許可する] チェック ボックスをオンにします。

  4. [ファイル] メニューの [Save] をクリックします。

ClickOnce アプリケーションでクエリ文字列を取得するには

  1. プロジェクト内の任意の場所に次のコードを記述します。

    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
    
    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. 定義済みの関数を呼び出して、名前でインデックス化された、クエリ文字列パラメータの Dictionary を取得します。

堅牢性の高いプログラム

クエリ文字列パラメータを使用する場合は、アプリケーションがどのようにインストールされ、アクティブ化されるかを十分に考慮する必要があります。アプリケーションが、Web またはネットワーク共有からユーザーのコンピュータにインストールされるように構成されている場合は、ユーザーが一度だけ URL を通じてアプリケーションをアクティブにすることが予想されます。その後ユーザーは、ほとんどの場合、[スタート] メニューのショートカットを使用してアプリケーションをアクティブにします。その結果アプリケーションは、その有効期間中に一度だけクエリ文字列引数を受け取ることが保証されます。これらの引数を後から使用できるようにユーザーのコンピュータに格納する場合は、それらが安全かつ確実に格納されるようにする必要があります。

アプリケーションがオンラインでのみ使用される場合は、常に URL を通じてそのアプリケーションがアクティブ化されます。ただしその場合でも、クエリ文字列パラメータが失われたり壊れたりしても正しく機能するようにアプリケーションを作成する必要があります。

セキュリティ

事前に悪意のある文字の入力を削除する予定である場合にのみ、ClickOnce アプリケーションに URL パラメータを渡すようにしてください。たとえば、引用符、スラッシュ、またはセミコロンが埋め込まれた文字列を、フィルタしないままデータベースに対する SQL クエリに使用すると、任意のデータ操作が行われる可能性があります。クエリ文字列のセキュリティの詳細については、「スクリプトによる攻略の概要」を参照してください。

参照

概念

ClickOnce の配置とセキュリティ