Jak: načtení informací o řetězec dotazu v aplikaci Online technologie ClickOnce
Řetězec dotazu je část adresy URL začínající otazníkem (?), obsahující libovolné informace ve formě název = hodnota.Předpokládejme, že máte aplikaci ClickOnce s názvem WindowsApp1, kterou provozujete na serveru servername a chcete předat hodnotu pro proměnnou username, když se spustí aplikace.Adresa URL může vypadat například následovně:
https://servername/WindowsApp1.application?username=joeuser
Následující dva postupy ukazují, jak používat aplikaci ClickOnce k získání informací řetězce dotazu.
[!POZNÁMKA]
V řetězci dotazu můžete informace předat pouze, pokud je aplikace spuštěna pomocí HTTP, místo použití sdílení souborů nebo místního systému souborů.
První procedura ukazuje, jak vaše aplikace ClickOnce může použít malou část kódu ke čtení těchto hodnot při spuštění aplikace.
Následující procedura ukazuje, jak nakonfigurovat váši aplikaci ClickOnce tak, aby mohla zpracovávat parametry řetězce dotazu pomocí MageUI.exe.Toto je třeba provést při každém publikování aplikace.
[!POZNÁMKA]
Prohlédněte si oddíl "Zabezpečení" dále v tomto tématu, před rozhodnutím o povolení této funkce.
Pro informace o tom jak vytvořit nasazení ClickOnce pomocí Mage.exe nebo MageUI.exe, navštivte Názorný postup: Ručně nasazení technologie ClickOnce aplikace.
[!POZNÁMKA]
Počínaje.NET Framework 3.5 SP1 je možné předat argumenty příkazového řádku offline ClickOnce aplikace.Pokud chcete zadat argumenty do aplikace, můžete předat v parametrech místní soubor s.Rozšíření APPREF MS.
Chcete-li získat informace řetězce dotazu z aplikace ClickOnce
Umístěte následující kód do projektu.Chcete-li, aby tento kód fungoval, budete muset mít odkaz na System.Web a přidat příkazy using nebo Imports pro System.Web, System.Web, System.Collections.Specialized a System.Deployment.Application.
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); }
Volejte dříve definovanou funkci pro načtení Dictionary parametrů řetězece dotazů, indexovaných podle názvu.
Chcete-li povolit předávání řetězce dotazů v aplikaci ClickOnce s MageUI.exe
Otevřete příkazový řádek .NET a zadejte:
MageUI
Z nabídky Soubor zvolte Otevřít a otevřete manifest nasazení pro Vaši aplikaci ClickOnce, což je soubor končící příponou .application.
Zvolte panel Možnosti Nasazení v levém navigačním okně a zvolte zaškrtávací políčko Povolit předávání URL parametrů aplikaci.
Z nabídky Soubor zvolte Uložit.
[!POZNÁMKA]
Alternativně můžete povolit předávání řetězce dotazů v Visual Studio. Zvolte zaškrtávací políčko Povolit předávání URL parametrů aplikaci, které lze najít otevřením Vlastností projektu, výbráním karty Publikovat, kliknutím na Vlastnosti a výběrem Manifesty.
Robustní programování
Při použití parametrů řetězeců dotazů, musíte pozorně posoudit způsob nainstalování a aktivace aplikace.Pokud je Vaše aplikace nakonfigurována tak, aby se instalovala do počítače uživatele z webu nebo ze síťového sdílení, je pravděpodobné, že uživatel aktivuje aplikaci pouze jednou prostřednictvím adresy URL.Poté uživatel obvykle aktivuje aplikaci pomocí zástupce v nabídce Start.V důsledku toho je zaručen příjem argumentů řetězce dotazů aplikace pouze jednou během její doby života.Pokud se rozhodnete uložit tyto argumenty na počítači uživatele pro budoucí použití, zodpovídáte za jejich ukložení bezpečným a zabezpečeným způsobem.
Pokud je aplikace pouze v režimu online, bude vždy aktivována prostřednictvím adresy URL.I v tomto případě však aplikace musí být napsána, aby fungovala správně, pokud parametry řetězce dotazů chybí nebo jsou poškozené.
Zabezpečení
Povolte předávání parametrů URL vaší aplikaci ClickOnce pouze, pokud máte v úmyslu čistit vstup od všech škodlivých znaků před jeho použitím. Řetězec vložený s nabídkami, lomítky nebo středníky, by mohl provádět libovolné operace s daty, pokud by byl použit nefiltrovaný jako příkaz jazyka SQL proti databázi.Další informace o zabezpečení řetězců dotazů naleznete v tématu Script Exploits Overview.