Frage

Wie kann ich den Abfrage-String (GET / POST-Parameter) zu analysieren, um eine Anwendung Manifest in .NET geschickt?
Von einer Anwendung nenne ich MyApp.application die meine .NET-Anwendung installieren muss (falls installiert) und in jedem Fall sollte es die Anwendung aufrufen, die die GET-Parameter analysieren sollte.

Später bearbeiten:
Ich habe eine .NET-Anwendung, die über Clickonce installiert werden soll. Es ist bereits auf einem Webserver veröffentlicht. Die Ausführung der Anwendung wird durch den Aufruf der MyApp.application Datei von einer externen Anwendung (geschrieben in PHP) getan. Diese prüft normalerweise für Updates und installiert die Anwendung bei Bedarf, dann ruft er die Anwendung so dass diese die Datei ist, die immer von der externen Anwendung aufgerufen werden.
Die externe App sendet Parameter über eine GET-Abfrage auf diese Datei, die in dem .NET-App bearbeitet werden soll (die Parameter umfassen Berechtigungsinformationen, da dies der einfachste Weg, ich die automatische Anmeldung implementieren sehen).
Wenn die GET-Parameter zu MyApp.application gesendet werden, wie kann ich sie in MyApp.cs verarbeiten jedes Mal, es gestartet wird?

War es hilfreich?

Lösung

Als erstes müssen Sie die Optionen Query-String gewährleisten aktiviert sind (Projekteigenschaften => veröffentlichen => Optionen => manifestiert => URL-Parameter erlauben ...);

.

Dann - ermöglichen Parität zwischen eigenständigen und Web, ich so etwas wie unten verwenden (das wichtige Bit ist ActivationArguments.ActivationData, du wirst einen Verweis benötigen auch System.Deployment.dll)

Sie auch bei System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri aussehen könnten, die MSDN ein gutes Beispiel hat hier .


    public static string[] GetStartupArguments() {
        List<string> allOptions = new List<string>();
        try // command line
        {
            string[] options = System.Environment.GetCommandLineArgs();
            if (options != null) { // strip the first (the exe name)
                int length = options.Length;
                for (int i = 1; i < length; i++)
                    allOptions.Add(options[i]);
            }
        } catch { } // lazy swallow
        try // query string
        {
            if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) {
                string[] options = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
                if (options != null && options.Length > 0) {
                    foreach (string queryItem in new Uri(options[0]).Query.TrimStart('?').Split('&')) {
                        allOptions.Add(System.Web.HttpUtility.UrlDecode(queryItem));
                    }
                }
            }
        } catch { } // lazy swallow

        return allOptions.ToArray();
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top