Bagikan melalui


Mengambil informasi string kueri dalam aplikasi ClickOnce online

String kueri adalah bagian dari URL yang dimulai dengan tanda tanya (?) yang berisi informasi arbitrer dalam formulir name=value. Misalkan Anda memiliki aplikasi ClickOnce bernama WindowsApp1 yang Anda host di servername, dan Anda ingin meneruskan nilai untuk variabel username saat aplikasi diluncurkan. URL Anda mungkin terlihat seperti berikut:

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

Dua prosedur berikut menunjukkan cara menggunakan aplikasi ClickOnce untuk mendapatkan informasi string kueri.

Catatan

Anda hanya dapat meneruskan informasi dalam string kueri saat aplikasi Anda diluncurkan menggunakan HTTP, alih-alih menggunakan berbagi file atau sistem file lokal.

Prosedur pertama menunjukkan bagaimana aplikasi ClickOnce Anda dapat menggunakan sepotong kecil kode untuk membaca nilai-nilai ini saat aplikasi diluncurkan.

Prosedur berikutnya menunjukkan cara mengonfigurasi aplikasi ClickOnce Anda menggunakan MageUI.exe sehingga dapat menerima parameter string kueri. Anda harus melakukan ini setiap kali Anda menerbitkan aplikasi Anda.

Catatan

Lihat bagian "Keamanan" nanti dalam topik ini sebelum Anda membuat keputusan untuk mengaktifkan fitur ini.

Untuk informasi tentang cara membuat penyebaran ClickOnce menggunakan Mage.exe atau MageUI.exe, lihat Panduan: Menyebarkan aplikasi ClickOnce secara manual.

Catatan

Mulai dari .NET Framework 3.5 SP1, dimungkinkan untuk meneruskan argumen baris perintah ke aplikasi ClickOnce offline. Jika Anda ingin memberikan argumen ke aplikasi, Anda dapat meneruskan parameter ke file pintasan dengan . Ekstensi APPREF-MS.

Untuk mendapatkan informasi string kueri dari aplikasi ClickOnce

  1. Tempatkan kode berikut di proyek Anda. Agar kode ini berfungsi, Anda harus memiliki referensi ke System.Web dan menambahkan using atau Imports direktif untuk System.Web, System.Collections.Specialized, dan System.Deployment.Application.

    Catatan

    Kelas ApplicationDeployment dan API di System.Deployment.Application namespace tidak didukung dalam .NET Core dan .NET 5 dan versi yang lebih baru. Di .NET 7, metode baru untuk mengakses properti penyebaran aplikasi didukung. Untuk informasi selengkapnya, lihat Properti penyebaran Access ClickOnce di .NET. .NET 7 tidak mendukung metode ApplicationDeployment yang setara.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. Panggil fungsi yang ditentukan sebelumnya untuk mengambil Dictionary parameter string kueri, yang diindeks berdasarkan nama.

Untuk mengaktifkan string kueri yang melewati aplikasi ClickOnce dengan MageUI.exe

  1. Buka Prompt Perintah .NET dan ketik:

    MageUI
    
  2. Dari menu File, pilih Buka, dan buka manifes penyebaran untuk aplikasi ClickOnce Anda, yang merupakan file yang berakhiran .application ekstensi.

  3. Pilih panel Opsi Penyebaran di jendela navigasi sebelah kiri, dan pilih kotak centang Izinkan parameter URL untuk diteruskan ke aplikasi .

  4. Dari menu File , pilih Simpan.

Catatan

Secara bergantian, Anda dapat mengaktifkan string kueri yang melewati di Visual Studio. Pilih kotak centang Izinkan parameter URL untuk diteruskan ke aplikasi , yang dapat ditemukan dengan membuka Properti Proyek, memilih tab Terbitkan , mengklik tombol Opsi , lalu memilih Manifes.

Catatan

Di ClickOnce untuk .NET Core 3.1 dan .NET 5 atau yang lebih baru, Anda mengatur properti penyebaran menggunakan alat Terbitkan alih-alih panduan Terbitkan dan halaman Terbitkan Desainer Proyek. Untuk informasi selengkapnya, lihat Menyebarkan aplikasi .NET Windows menggunakan ClickOnce dan ClickOnce untuk .NET.

Pemrograman yang kuat

Saat menggunakan parameter string kueri, Anda harus memberikan pertimbangan yang cermat tentang cara aplikasi Anda diinstal dan diaktifkan. Jika aplikasi Anda dikonfigurasi untuk menginstal di komputer pengguna dari Web atau dari berbagi jaringan, kemungkinan pengguna akan mengaktifkan aplikasi hanya sekali melalui URL. Setelah itu, pengguna biasanya akan mengaktifkan aplikasi Anda menggunakan pintasan di menu Mulai . Akibatnya, aplikasi Anda dijamin akan menerima argumen string kueri hanya sekali selama masa pakainya. Jika Anda memilih untuk menyimpan argumen ini di komputer pengguna untuk digunakan di masa mendatang, Anda bertanggung jawab untuk menyimpannya dengan cara yang aman dan aman.

Jika aplikasi Anda hanya online, aplikasi tersebut akan selalu diaktifkan melalui URL. Meskipun demikian, dalam hal ini, aplikasi Anda harus ditulis agar berfungsi dengan baik jika parameter string kueri hilang atau rusak.

.NET Framework Security

Izinkan meneruskan parameter URL ke aplikasi ClickOnce Anda hanya jika Anda berencana untuk membersihkan input karakter berbahaya sebelum menggunakannya. String yang disematkan dengan tanda kutip, garis miring, atau titik koma, misalnya, mungkin melakukan operasi data arbitrer jika digunakan tanpa filter dalam kueri SQL terhadap database. Untuk informasi selengkapnya tentang keamanan string kueri, lihat Gambaran umum eksploitasi Skrip.