Pobieranie informacji o ciągu zapytania w aplikacji ClickOnce w trybie online

Ciąg zapytania jest częścią adresu URL rozpoczynającą się od znaku zapytania (?), który zawiera dowolne informacje w formularzu name=value. Załóżmy, że masz aplikację ClickOnce o nazwie WindowsApp1 , którą hostujesz w systemie servername, i chcesz przekazać wartość zmiennej username po uruchomieniu aplikacji. Adres URL może wyglądać następująco:

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

W poniższych dwóch procedurach pokazano, jak uzyskać informacje o ciągu zapytania za pomocą aplikacji ClickOnce.

Uwaga

Informacje w ciągu zapytania można przekazywać tylko podczas uruchamiania aplikacji przy użyciu protokołu HTTP, zamiast korzystać z udziału plików lub lokalnego systemu plików.

Pierwsza procedura pokazuje, jak aplikacja ClickOnce może użyć małego fragmentu kodu do odczytania tych wartości po uruchomieniu aplikacji.

W następnej procedurze pokazano, jak skonfigurować aplikację ClickOnce przy użyciu MageUI.exe, aby mogła akceptować parametry ciągu zapytania. Należy to zrobić za każdym razem, gdy opublikujesz aplikację.

Uwaga

Przed podjęciem decyzji o włączeniu tej funkcji zapoznaj się z sekcją "Zabezpieczenia" w dalszej części tego tematu.

Aby uzyskać informacje o sposobie tworzenia wdrożenia technologii ClickOnce przy użyciu Mage.exe lub MageUI.exe, zobacz Przewodnik: ręczne wdrażanie aplikacji ClickOnce.

Uwaga

Począwszy od programu .NET Framework 3.5 SP1, można przekazać argumenty wiersza polecenia do aplikacji ClickOnce w trybie offline. Jeśli chcesz podać argumenty aplikacji, możesz przekazać parametry do pliku skrótów za pomocą polecenia . ROZSZERZENIE APPREF-MS.

Aby uzyskać informacje o ciągu zapytania z aplikacji ClickOnce

  1. Umieść następujący kod w projekcie. Aby ten kod działał, musisz mieć odwołanie do pliku System.Web i dodać using dyrektywy Imports system.Web, System.Collections.Specialized i System.Deployment.Application.

    Uwaga

    Klasy ApplicationDeployment i interfejsy API w System.Deployment.Application przestrzeni nazw nie są obsługiwane w wersjach .NET Core i .NET 5 i nowszych. W programie .NET 7 jest obsługiwana nowa metoda uzyskiwania dostępu do właściwości wdrażania aplikacji. Aby uzyskać więcej informacji, zobacz Access ClickOnce deployment properties in .NET (Uzyskiwanie dostępu do właściwości wdrożenia ClickOnce na platformie .NET). Platforma .NET 7 nie obsługuje odpowiedników metod ApplicationDeployment.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. Wywołaj funkcję zdefiniowaną wcześniej, aby pobrać Dictionary parametry ciągu zapytania, indeksowane według nazwy.

Aby włączyć przekazywanie ciągu zapytania w aplikacji ClickOnce z MageUI.exe

  1. Otwórz wiersz polecenia platformy .NET i wpisz:

    MageUI
    
  2. W menu Plik wybierz pozycję Otwórz i otwórz manifest wdrożenia aplikacji ClickOnce, który jest plikiem kończącym .application się rozszerzeniem.

  3. Wybierz panel Opcje wdrażania w oknie nawigacji po lewej stronie, a następnie zaznacz pole wyboru Zezwalaj na przekazywanie parametrów adresu URL do aplikacji.

  4. W menu Plik wybierz pozycję Zapisz.

Uwaga

Alternatywnie możesz włączyć przekazywanie ciągu zapytania w programie Visual Studio. Zaznacz pole wyboru Zezwalaj na przekazywanie parametrów adresu URL do aplikacji, które można znaleźć, otwierając pozycję Właściwości projektu, wybierając kartę Publikuj, klikając przycisk Opcje, a następnie wybierając pozycję Manifesty.

Uwaga

W technologii ClickOnce dla platformy .NET Core 3.1 i .NET 5 lub nowszej można ustawić właściwości wdrożenia przy użyciu narzędzia Publikuj zamiast kreatora Publikowanie i strony Publikowanie w programie Project Projektant. Aby uzyskać więcej informacji, zobacz Deploy a .NET Windows application using ClickOnce and ClickOnce for .NET (Wdrażanie aplikacji .NET przy użyciu technologii ClickOnce i ClickOnce dla platformy .NET).

Niezawodne programowanie

W przypadku używania parametrów ciągu zapytania należy dokładnie rozważyć sposób instalowania i aktywowania aplikacji. Jeśli aplikacja jest skonfigurowana do instalacji na komputerze użytkownika z sieci Web lub z udziału sieciowego, prawdopodobnie użytkownik aktywuje aplikację tylko raz za pośrednictwem adresu URL. Następnie użytkownik zazwyczaj aktywuje aplikację przy użyciu skrótu w menu Start . W związku z tym aplikacja ma gwarancję odbierania argumentów ciągu zapytania tylko raz w okresie istnienia. Jeśli zdecydujesz się przechowywać te argumenty na komputerze użytkownika w przyszłości, odpowiadasz za przechowywanie ich w bezpieczny i bezpieczny sposób.

Jeśli aplikacja jest tylko w trybie online, zawsze będzie aktywowana za pośrednictwem adresu URL. Nawet w takim przypadku aplikacja musi być zapisana w celu poprawnego działania, jeśli brakuje parametrów ciągu zapytania lub jest ona uszkodzona.

zabezpieczenia .NET Framework

Zezwalaj na przekazywanie parametrów adresu URL do aplikacji ClickOnce tylko wtedy, gdy planujesz oczyścić dane wejściowe złośliwych znaków przed jego użyciem. Na przykład ciąg osadzony z cudzysłowami, ukośnikami lub średnikami może wykonywać dowolne operacje na danych, jeśli są używane niefiltrowane w zapytaniu SQL względem bazy danych. Aby uzyskać więcej informacji na temat zabezpieczeń ciągu zapytania, zobacz Script exploits overview (Omówienie luk w zabezpieczeniach skryptów).