Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De flesta program använder eller producerar data. ClickOnce ger dig en mängd olika alternativ för att läsa och skriva data, både lokalt och via fjärranslutning.
Lokala data
Med ClickOnce kan du läsa in och lagra data lokalt med någon av följande metoder:
ClickOnce Data Directory
Isolerad lagring
Andra lokala filer
ClickOnce-datakatalog
Varje ClickOnce-program som installeras på en lokal dator har en datakatalog som lagras i användarens dokument- och inställningsmapp. Alla filer som ingår i ett ClickOnce-program och markeras som en "data"-fil kopieras till den här katalogen när ett program installeras. Datafiler kan vara av valfri filtyp, som oftast används som text-, XML- och databasfiler, till exempel Microsoft Access-.mdb filer.
Datakatalogen är avsedd för programhanterade data, vilket är data som programmet uttryckligen lagrar och underhåller. Alla statiska filer med icke-beroenden som inte har markerats som "data" i programmanifestet finns i stället i Programkatalogen. I den här katalogen finns programmets körbara (.exe) filer och sammansättningar.
Anmärkning
När ett ClickOnce-program avinstalleras tas även datakatalogen bort. Använd aldrig Data Directory för att lagra slutanvändarhanterade data, till exempel dokument.
Markera datafilerna i en ClickOnce-distribution
Om du vill placera en befintlig fil i datakatalogen måste du markera den befintliga filen som en datafil i ClickOnce-programmets programmanifestfil. Mer information finns i Så här: Inkludera en datafil i ett ClickOnce-program.
Läsa från och skriva till datamappen
Läsning från Data Directory kräver att din ClickOnce-applikation begär läsbehörighet; på samma sätt kräver skrivning till mappen skrivbehörighet. Programmet får automatiskt den här behörigheten om det är konfigurerat att köras med fullständigt förtroende. Mer information om hur du höjer behörigheter för ditt program med hjälp av behörighetshöjning eller distribution av betrodda program finns i Säkra ClickOnce-program.
Anmärkning
Om din organisation inte använder distribution av betrodda program och har inaktiverat behörighetshöjning misslyckas kontrollen av behörigheter.
När programmet har dessa behörigheter kan det komma åt Data Directory med hjälp av metodanrop på klasser i System.IO. Du kan hämta sökvägen till Data Directory i ett Windows Forms ClickOnce-program genom att använda DataDirectory-egenskapen som finns på CurrentDeployment-egenskapen av ApplicationDeployment. Det här är det mest praktiska och rekommenderade sättet att komma åt dina data. Följande kodexempel visar hur du gör detta för en textfil med namnet CSV.txt som du har inkluderat i distributionen som en datafil.
Anmärkning
Klassen ApplicationDeployment och API:erna System.Deployment.Application i namnområdet stöds inte i .NET Core- och .NET 5- och senare versioner. I .NET 7 stöds en ny metod för att komma åt egenskaper för programdistribution. Mer information finns i Access ClickOnce distributionsegenskaper i .NET. .NET 7 stöder inte motsvarigheten till ApplicationDeployment-metoder.
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);
}
}
Mer information om hur du markerar filer i distributionen som datafiler finns i Så här tar du med en datafil i ett ClickOnce-program.
Du kan också hämta datakatalogsökvägen med hjälp av relevanta variabler i Application klassen, till exempel LocalUserAppDataPath.
Att manipulera andra typer av filer kan kräva ytterligare behörigheter. Om du till exempel vill använda en Access-databasfil (.mdb) måste programmet ha fullständigt förtroende för att kunna använda relevanta <xref:System.Data-klasser> .
Datakatalog och programversioner
Varje version av ett program har en egen Data Directory, som är isolerad från andra versioner. ClickOnce skapar den här katalogen oavsett om några datafiler ingår i distributionen så att programmet har en plats för att skapa nya datafiler vid körning. När en ny version av ett program installeras kopierar ClickOnce alla befintliga datafiler från den tidigare versionens Data Directory till den nya versionens Data Directory – oavsett om de ingick i den ursprungliga distributionen eller skapades av programmet.
ClickOnce ersätter den äldre versionen av filen med den nyare versionen av servern om en datafil har ett annat hashvärde i den gamla versionen av programmet som i den nya versionen. Om den tidigare versionen av programmet skapade en ny fil med samma namn som en fil som ingår i den nya versionens distribution skriver ClickOnce över den gamla versionens fil med den nya filen. I båda fallen inkluderas de gamla filerna i en underkatalog i datakatalogen med namnet .pre, så att programmet fortfarande kan komma åt gamla data i migreringssyfte.
Om du behöver mer detaljerad migrering av data kan du använda API:et ClickOnce Deployment för att utföra anpassad migrering från den gamla datakatalogen till den nya datakatalogen. Du måste testa för en tillgänglig nedladdning med hjälp av IsFirstRun, ladda ned uppdateringen med Update eller UpdateAsync, och utföra allt anpassat datamigreringsarbete på egen hand när uppdateringen är klar.
Isolerad lagring
Isolerad lagring tillhandahåller ett API för att skapa och komma åt filer med hjälp av ett enkelt API. Den faktiska platsen för de lagrade filerna är dold för både utvecklaren och användaren.
Isolerad lagring fungerar i alla versioner av .NET Framework. Isolerad lagring fungerar också i delvis betrodda program utan behov av ytterligare behörighetsbidrag. Du bör använda isolerad lagring om ditt program måste köras i delvis förtroende, men måste underhålla programspecifika data.
Anmärkning
I ClickOnce för .NET Core och .NET 5 eller senare stöds inte partiellt förtroende, som kräver kodåtkomstsäkerhet. I .NET Framework är användningen av Code Access Security inte en bra metod och rekommenderas inte.
Mer information finns i Isolerad lagring.
Andra lokala filer
Om ditt program måste arbeta med eller spara slutanvändardata, till exempel rapporter, bilder, musik och så vidare, måste FileIOPermission programmet läsa och skriva data till det lokala filsystemet.
Fjärrdata
Vid något tillfälle kommer ditt program troligen att behöva hämta information från en fjärransluten webbplats, till exempel kunddata eller marknadsinformation. I det här avsnittet beskrivs de vanligaste teknikerna för att hämta fjärrdata.
Få åtkomst till filer med HTTP
Du kan komma åt data från en webbserver med hjälp av antingen WebClient klassen eller HttpWebRequest i System.Net namnområdet. Data kan vara antingen statiska filer eller ASP.NET program som returnerar rådata eller XML-data. Om dina data är i XML-format är det snabbaste sättet att hämta data genom att använda XmlDocument klassen, vars Load metod tar en URL som argument. Ett exempel finns i Läsa ett XML-dokument i DOM.
Du måste tänka på säkerheten när ditt program kommer åt fjärrdata via HTTP. Som standard kan clickOnce-programmets åtkomst till nätverksresurser begränsas, beroende på hur programmet distribuerades. Dessa begränsningar tillämpas för att förhindra att skadliga program får åtkomst till privilegierade fjärrdata eller från att använda en användares dator för att attackera andra datorer i nätverket.
I följande tabell visas de distributionsstrategier som du kan använda och deras standardwebbbehörigheter.
| Distributionstyp | Standardbehörigheter för nätverk |
|---|---|
| Webbinstallation | Kan bara komma åt webbservern som programmet installerades från |
| Installation av delad filenhet | Det går inte att komma åt några webbservrar |
| CD-ROM Installera | Kan komma åt alla webbservrar |
Om ditt ClickOnce-program inte kan komma åt en webbserver på grund av säkerhetsbegränsningar måste programmet kontrollera WebPermission för den webbplatsen. Mer information om hur du ökar säkerhetsbehörigheterna för ett ClickOnce-program finns i Säkra ClickOnce-program.
Få åtkomst till data via en XML-webbtjänst
Om du exponerar dina data som en XML-webbtjänst kan du komma åt data med hjälp av en XML-webbtjänstproxy. Proxyn är en .NET Framework-klass som du skapar med hjälp av antingen Visual Studio. Xml-webbtjänstens åtgärder, till exempel att hämta kunder, göra beställningar och så vidare, exponeras som metoder på proxyn. Detta gör webbtjänster mycket enklare att använda än råtext- eller XML-filer.
Om XML-webbtjänsten fungerar via HTTP kommer tjänsten att bindas av samma säkerhetsbegränsningar som klasserna WebClient och HttpWebRequest .
Få åtkomst till en databas direkt
Du kan använda klasserna i System.Data namnområdet för att upprätta direkta anslutningar med en databasserver, till exempel SQL Server i nätverket, men du måste ta hänsyn till säkerhetsproblemen. Till skillnad från HTTP-begäranden är databasanslutningsbegäranden alltid förbjudna som standard under partiellt förtroende. du har bara sådan behörighet som standard om du installerar ClickOnce-programmet från en CD-ROM. Detta ger ditt program fullt förtroende. Om du vill aktivera åtkomst till en specifik SQL Server-databas måste ditt program begära SqlClientPermission det. Om du vill aktivera åtkomst till en annan databas än SQL Server måste den begära OleDbPermission.
För det mesta behöver du inte komma åt databasen direkt, utan i stället komma åt den via ett webbserverprogram som skrivits i ASP.NET eller en XML-webbtjänst. Att komma åt databasen på det här sättet är ofta den bästa metoden om ditt ClickOnce-program distribueras från en webbserver. Du kan komma åt servern i partiellt förtroende utan att höja programmets behörigheter.