Abrufen von Abfragezeichenfolgen-Informationen in einer Online-ClickOnce-Anwendung

Die Abfragezeichenfolge ist der Teil einer URL, die mit einem Fragezeichen (?) beginnt und die willkürliche Informationen im Format name=valueenthält. Angenommen, Sie verfügen über eine ClickOnce-Anwendung namens WindowsApp1, die Sie auf servername hosten, und Sie möchten einen Wert für die Variable username übergeben, wenn die Anwendung gestartet wird. Die URL könnte folgendermaßen aussehen:

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

Die folgenden beiden Vorgehensweisen zeigen, wie eine ClickOnce-Anwendung verwendet wird, um Informationen zu Abfragezeichenfolgen abzurufen.

Hinweis

Sie können nur Informationen in einer Abfragezeichenfolge übergeben, wenn Ihre Anwendung über HTTP gestartet wird und nicht über eine Dateifreigabe oder das lokale Dateisystem.

Das erste Verfahren zeigt, wie Ihre ClickOnce-Anwendung einen kleinen Codeabschnitt verwenden kann, um diese Werte beim Anwendungsstart zu lesen.

Das nächste Verfahren zeigt, wie Sie Ihre ClickOnce-Anwendung mithilfe von MageUI.exe so konfigurieren, dass sie Abfragezeichenfolgen-Parameter akzeptieren kann. Sie müssen dieses Verfahren bei jeder Veröffentlichung der Anwendung durchführen.

Hinweis

Bevor Sie eine Entscheidung zur Aktivierung dieser Funktion treffen, lesen Sie zuerst den Abschnitt „Sicherheit“ weiter unten in diesem Thema.

Informationen zum Erstellen einer ClickOnce-Bereitstellung mithilfe von Mage.exe oder MageUI.exe finden Sie unter Manuelles Bereitstellen einer ClickOnce-Anwendung.

Hinweis

Ab .NET Framework 3.5 SP1 ist es möglich, Befehlszeilenargumente an eine ClickOnce-Offlineanwendung zu übergeben. Wenn Sie der Anwendung Argumente bereitstellen möchten, können Sie der Verknüpfungsdatei In-Parameter mit der Erweiterung APPREF-MS übergeben.

So rufen Sie Abfragezeichenfolgen-Informationen in einer ClickOnce-Anwendung ab

  1. Platzieren Sie folgenden Code in Ihrem Projekt. Damit dieser Code funktioniert, müssen Sie über einen Verweis auf System.Web verfügen und die Anweisung using oder Imports für System.Web, System.Collections.Specialized und System.Deployment.Application hinzufügen.

    Hinweis

    Die Klasse ApplicationDeployment und die APIs im Namespace System.Deployment.Application werden in .NET Core und .NET 5 und höheren Versionen nicht unterstützt. In .NET 7 wird eine neue Methode für den Zugriff auf Anwendungsbereitstellungseigenschaften unterstützt. Weitere Informationen finden Sie unter Zugreifen auf ClickOnce-Bereitstellungseigenschaften in .NET. .NET 7 unterstützt nicht das Äquivalent von ApplicationDeployment-Methoden.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. Rufen Sie die zuvor definierte Funktion ab, um ein nach Namen indexiertes Dictionary der Abfragezeichenfolgenparameter abzurufen.

So aktivieren Sie die Übergabe der Abfragezeichenfolge in einer ClickOnce-Anwendung mit MageUI.exe

  1. Öffnen Sie die Eingabeaufforderung .NET und geben Sie Folgendes ein:

    MageUI
    
  2. Klicken Sie im Menü Datei auf Öffnen, und öffnen Sie das Bereitstellungsmanifest für Ihre ClickOnce-Anwendung, bei dem es sich um die Datei mit der .application-Erweiterung handelt.

  3. Wählen Sie den Bereich Bereitstellungsoptionen im linken Navigationsfenster aus, und wählen Sie das Kontrollkästchen Übergeben von URL-Parametern an die Anwendung zulassen aus.

  4. Wählen Sie im Menü Datei die Option Speichernaus.

Hinweis

Alternativ können Sie die Übergabe von Abfragezeichenfolgen in Visual Studio aktivieren. Wählen Sie das Kontrollkästchen Übergeben von URL-Parametern an die Anwendung zulassen aus. Dieses Kontrollkästchen finden Sie, indem Sie die Projekteigenschaftenöffnen und die Schaltfläche Veröffentlichen auswählen. Anschließend klicken Sie auf die Schaltfläche Optionen und wählen Manifesteaus.

Hinweis

In ClickOnce for .NET Core 3.1 und .NET 5 oder höher legen Sie Bereitstellungseigenschaften mithilfe des Veröffentlichungstools anstelle des Veröffentlichungs-Assistenten und der Seite „Veröffentlichen“ des Projekt-Designers fest. Weitere Informationen finden Sie unter Bereitstellen einer .NET-Windows-Anwendung mithilfe von ClickOnce und ClickOnce for .NET.

Stabile Programmierung

Wenn Sie Abfragezeichenfolgen-Parameter verwenden, überlegen Sie genau, wie Ihre Anwendung installiert und aktiviert wird. Wenn Ihre Anwendung so konfiguriert ist, dass Sie auf dem Computer des Nutzers aus dem Web oder einer Netzwerkfreigabe installiert wird, dann ist es wahrscheinlich, dass der Benutzer die Anwendung nur einmal über die URL aktivieren wird. Danach aktiviert der Benutzer Ihre Anwendung normalerweise über die Verknüpfung im Menü Start . Deshalb ist gewährleistet, dass Ihre Anwendung Argumente für Abfragezeichenfolgen nur einmal im Laufe ihrer Lebensdauer erhält. Wenn Sie diese Argumente auf dem Computer des Benutzers für den zukünftigen Gebrauch speichern möchten, sind Sie dafür verantwortlich, sie auf sichere Weise zu speichern.

Wenn Ihre Anwendung nur online ist, wird sie immer durch eine URL aktiviert. Allerdings muss Ihre Anwendung auch in diesem Fall so geschrieben werden, dass sie ordnungsgemäß funktioniert, wenn die Abfragezeichenfolgen-Parameter fehlen oder beschädigt sind.

.NET Framework-Sicherheit

Lassen Sie die Übergabe von URL-Parametern an Ihre ClickOnce-Anwendung nur zu, wenn Sie beabsichtigen, die Eingabe vor der Verwendung von schädlichen Zeichen zu bereinigen. Eine Zeichenfolge, die z.B. mit Anführungszeichen, Schrägstrichen oder Semikola als Trennzeichen eingebettet ist, kann möglicherweise willkürliche Datenvorgänge durchführen, wenn sie ungefiltert in einer SQL-Abfrage für eine Datenbank verwendet wird. Weitere Informationen zur Sicherheit von Abfragezeichenfolgen finden Sie in der Übersicht über Skriptexploits.