Es wird empfohlen, Visual Studio 2017 zu verwenden

Zugreifen auf lokale und Remotedaten in einer ClickOnce-Anwendung

 

Die neueste Dokumentation zu Visual Studio 2017 finden Sie unter Dokumentation zu Visual Studio 2017.

Die meisten Anwendungen nutzen oder generieren Daten.ClickOnce bietet Ihnen eine Vielzahl von Optionen zum Lesen und Schreiben von Daten, sowohl lokal als auch remote.

Mit ClickOnce laden und speichern Sie Daten lokal mithilfe einer der folgenden Methoden:

  • ClickOnce Datenverzeichnis

  • Isolierte Speicherung

  • Andere lokale Dateien

ClickOnce-Datenverzeichnis

Jede auf einem lokalen Computer installierte ClickOnce-Anwendung verfügt über ein Datenverzeichnis, das im Ordner "Dokumente und Einstellungen" des Benutzers gespeichert ist. Jede in einer ClickOnce-Anwendung enthaltene und als "Daten"-Datei gekennzeichnete Datei wird in dieses Verzeichnis kopiert, wenn eine Anwendung installiert wird. Datendateien können einen beliebigen Dateityp aufweisen. Zu den am häufigsten verwendeten gehören Text, XML und Datenbankdateien, z. B. Microsoft Access-MDB-Dateien.

Das Datenverzeichnis ist für anwendungsverwaltete Daten konzipiert, d. h. für Daten, die die Anwendung explizit speichert und verwaltet. Alle statischen, unabhängigen Dateien, die im Anwendungsmanifest nicht als "Daten"gekennzeichnet sind, befinden sich dagegen im Anwendungsverzeichnis. Dieses Verzeichnis ist der Ort, an dem sich die ausführbaren Dateien (.exe) und die Assemblys der Anwendung befinden.

System_CAPS_ICON_note.jpg Hinweis

Wenn eine ClickOnce-Anwendung deinstalliert wird, wird das zugehörige Datenverzeichnis ebenfalls entfernt. Verwenden Sie niemals das Datenverzeichnis, um durch den Endbenutzer verwaltete Daten, wie z. B. Dokumente, zu speichern.

Markieren von Datendateien in einer ClickOnce-Verteilung

Um eine vorhandene Datei im Datenverzeichnis abzulegen, müssen Sie sie in der Anwendungsmanifestdatei ihrer ClickOnce-Anwendung als Datendatei markieren. Weitere Informationen finden Sie unter How to: Include a Data File in a ClickOnce Application.

Lesen aus der und Schreiben in die Registrierung

Zum Lesen aus dem Datenverzeichnis muss Ihre ClickOnce-Anwendung eine Leseberechtigung anfordern; analog dazu erfordert das Schreiben in das Verzeichnis eine Schreibberechtigung. Ihre Anwendung verfügt automatisch über diese Berechtigung, wenn sie für die Ausführung mit voller Vertrauenswürdigkeit konfiguriert ist. Weitere Informationen zum Erhöhen von Berechtigungen für die Anwendung unter Verwendung der Berechtigungserweiterung oder der Bereitstellung vertrauenswürdiger Anwendungen finden Sie unter Sichern von ClickOnce-Anwendungen.

System_CAPS_ICON_note.jpg Hinweis

Wenn Ihre Organisation die Bereitstellung vertrauenswürdiger Anwendungen nicht verwendet und die Berechtigungserweiterung deaktiviert hat, schlägt die Assertion der Berechtigungen fehl.

Nachdem die Anwendung über diese Berechtigungen verfügt, kann sie auf das Datenverzeichnis zugreifen, indem sie Methodenaufrufe für Klassen innerhalb von System.IO verwendet. Den Pfad des Datenverzeichnisses innerhalb einer Windows Forms ClickOnce-Anwendung erhalten Sie mithilfe der in der CurrentDeployment-Eigenschaft von ApplicationDeployment definierten DataDirectory-Eigenschaft. Dies ist die einfachste und empfohlene Möglichkeit, auf Ihre Daten zuzugreifen. Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit einer Textdatei mit dem Namen CSV.txt vorgehen, die Sie als Datendatei in die Bereitstellung aufgenommen haben.

            if (ApplicationDeployment.IsNetworkDeployed)
            {
                try
                {
                    using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
                    {
                        MessageBox.Show(sr.ReadToEnd());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Could not read file. Error message: " + ex.Message);
                }
            }

Weitere Informationen über die Kennzeichnung von Dateien in der Bereitstellung als Datendateien finden Sie unter How to: Include a Data File in a ClickOnce Application.

Sie können den Pfad zum Datenverzeichnis auch mit den relevanten Variablen in der Application-Klasse wie z. B. LocalUserAppDataPath abrufen.

Zum Bearbeiten anderer Typen von Dateien sind möglicherweise zusätzliche Berechtigungen erforderlich. Wenn Sie z. B. eine Access-Datenbankdatei (.mdb) verwenden möchten, muss Ihre Anwendung volle Vertrauenswürdigkeit zusichern, um die relevanten System.Data-Klassen verwenden zu können.

Datenverzeichnis und Anwendungsversionen

Jede Version einer Anwendung hat ein eigenes Datenverzeichnis, das von anderen Versionen isoliert ist.ClickOnce erstellt dieses Verzeichnis unabhängig davon, ob Datendateien in der Bereitstellung enthalten sind, damit die Anwendung über einen Speicherort verfügt, um neue Datendateien zur Laufzeit zu erstellen. Wenn eine neue Version einer Anwendung installiert wird, kopiert ClickOnce alle vorhandenen Datendateien aus dem Datenverzeichnis vorherigen Version in das der neuen Version – unabhängig davon, ob sie in der ursprünglichen Bereitstellung enthalten waren oder von der Anwendung erstellt wurden.

Wenn eine Datendatei in der alten Version der Anwendung über einen anderen Hash-Wert als in der neuen Version verfügt, ersetzt ClickOnce die ältere Version der Datei durch die neuere Version des Servers. Auch wenn die frühere Version der Anwendung eine neue Datei mit demselben Namen wie dem einer Datei in der Bereitstellung der neuen Version erstellt hat, überschreibt ClickOnce die Datei der alten Version. In beiden Fällen werden die alten Dateien in ein Unterverzeichnis des Datenverzeichnisses mit dem Namen .pre eingeschlossen, sodass die Anwendung zu Migrationszwecken weiterhin auf die alten Daten zugreifen kann.

Wenn Sie eine umfassendere Migration von Daten benötigen, können Sie die API für die ClickOnce-Bereitstellung verwenden, um eine benutzerdefinierte Migration vom alten zum neuen Datenverzeichnis durchzuführen. Dabei suchen Sie zunächst mithilfe von IsFirstRun einen verfügbaren Download, laden das Update mit Update oder UpdateAsync herunter und führen nach abgeschlossenem Update die benutzerdefinierten Schritte zur Datenmigration selbst aus.

Isolierte Speicherung

Die isolierte Speicherung stellt eine API für das Erstellen und den Zugriff auf Dateien über eine einfache API bereit. Der tatsächliche Speicherort der Dateien wird für den Entwickler und Benutzer ausgeblendet.

Isolierte Speicherung funktioniert in allen Versionen von .NET Framework. Isolierte Speicherung funktioniert auch in teilweise vertrauenswürdigen Anwendungen, ohne dass zusätzliche Berechtigungen gewährt werden müssen. Sie sollten isolierte Speicherung verwenden, wenn Ihre Anwendung unter teilweiser Vertrauenswürdigkeit ausgeführt werden, dabei aber anwendungsspezifische Daten verwalten muss.

Weitere Informationen finden Sie unter Isolierte Speicherung.

Andere lokale Dateien

Wenn Ihre Anwendung mit Daten von Endbenutzern wie z. B. Berichten, Bildern, Musik usw. arbeiten oder solche Daten speichern muss, benötigt sie FileIOPermission, um Daten im lokalen Dateisystem zu lesen oder in dieses zu schreiben.

An einem gewissen Punkt wird die Anwendung wahrscheinlich Informationen von einer Remotewebsite, wie z. B. Kundendaten oder Marktinformationen, abrufen müssen. Dieser Abschnitt beschreibt die am häufigsten verwendeten Techniken für das Abrufen von Remotedaten.

Zugreifen auf Dateien über HTTP

Sie können auf Daten von einem Webserver zugreifen, indem Sie entweder den WebClient oder die HttpWebRequest-Klasse im System.Net-Namespace verwenden. Bei den Daten kann es sich entweder um statische Dateien oder ASP.NET-Anwendungen handeln, die unformatierten Text oder XML-Daten zurückgeben. Daten im XML-Format können Sie am schnellsten mithilfe der XmlDocument-Klasse abrufen, deren Load-Methode eine URL als Argument verwendet. Ein Beispiel finden Sie unter Einlesen eines XML-Dokuments in das DOM.

Wenn die Anwendung über HTTP auf Remotedaten zugreift, spielt auch Sicherheit eine Rolle. Der Zugriff der ClickOnce-Anwendung auf Netzwerkressourcen ist möglicherweise standardmäßig beschränkt. Dies hängt davon ab, wie die Anwendung bereitgestellt wurde. Diese Beschränkungen sollen verhindern, dass bösartige Programme Zugriff auf privilegierte Remotedaten erhalten oder über einen Benutzercomputer andere Computer im Netzwerk angreifen.

In der folgenden Tabelle werden mögliche Bereitstellungsstrategien sowie die entsprechenden Standardwebberechtigungen aufgelistet.

BereitstellungstypStandardmäßige Netzwerkberechtigungen
WebinstallationKann nur auf den Webserver zugreifen, von dem die Anwendung installiert wurde.
Installation von DateifreigabeKann auf keine Webserver zugreifen.
Installation von CD-ROMKann auf jeden beliebigen Webserver zugreifen.

Wenn die ClickOnce-Anwendung aufgrund von Sicherheitsbeschränkungen nicht auf einen Webserver zugreifen kann, muss die Anwendung WebPermission für diese Website bestätigen. Weitere Informationen zum Erhöhen von Sicherheitsberechtigungen für eine ClickOnce-Anwendung finden Sie unter Sichern von ClickOnce-Anwendungen.

Zugreifen auf Daten über einen XML-Webdienst

Wenn Sie Daten als XML-Webdienst verfügbar machen, können Sie mithilfe eines XML-Webdienstproxys auf die Daten zugreifen. Der Proxy ist eine .NET Framework-Klasse, die Sie mithilfe von Visual Studio erstellen. Die Vorgänge des XML-Webdienstes, z. B. Abrufen von Kunden, Aufgeben von Bestellungen usw., werden als Methoden für den Proxy verfügbar gemacht. Dadurch sind Webdienste viel benutzerfreundlicher als unformatierter Text oder XML-Dateien.

Wenn ein XML-Webdienst über HTTP ausgeführt wird, gelten für den Dienst dieselben Sicherheitsbeschränkungen wie für die WebClient-Klasse und die HttpWebRequest-Klasse.

Direktes Zugreifen auf eine Datenbank

Mithilfe der Klassen im System.Data-Namespace können Sie direkte Verbindungen zu einem Datenbankserver im Netzwerk herstellen, z. B. SQL Server, allerdings sind dabei bestimmte Sicherheitsaspekte zu berücksichtigen. Anders als HTTP-Anforderungen sind Datenbankverbindungsanforderungen in einer teilweise vertrauenswürdigen Umgebung standardmäßig unzulässig. Über die entsprechenden Berechtigungen verfügen Sie standardmäßig nur dann, wenn Sie die ClickOnce-Anwendung von einer CD-ROM installiert haben. Dadurch erhalten Anwendungen volle Vertrauenswürdigkeit. Um den Zugriff auf eine bestimmte SQL Server-Datenbank zu ermöglichen, muss die Anwendung SqlClientPermission für diese Datenbank anfordern. Für den Zugriff auf andere Datenbanken als SQL Server muss OleDbPermission angefordert werden.

In den meisten Fällen ist ein direkter Zugriff auf die Datenbank nicht erforderlich, sondern der Zugriff erfolgt über eine in ASP.NET geschriebene Webserveranwendung oder einen XML-Webdienst. Diese Art des Datenbankzugriffs ist häufig die beste Methode, wenn die ClickOnce-Anwendung über einen Webserver bereitgestellt wird. Sie können auf den als teilweise vertrauenswürdig eingestuften Server zugreifen, ohne dass die Berechtigungen der Anwendung erweitert werden müssen.

How to: Include a Data File in a ClickOnce Application

Anzeigen: