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.
XAML-webbläsarprogram (XBAPs) kombinerar funktioner i både webbprogram och rich-client-program. Precis som webbprogram kan XBAP:er distribueras till en webbserver och startas från Internet Explorer eller Firefox i Windows. Precis som program med rika klienter kan XBAP:er dra nytta av funktionerna i WPF. Att utveckla XBAP:er liknar också utveckling av rich-client. Det här avsnittet innehåller en enkel introduktion på hög nivå till XBAP-utveckling och beskriver var XBAP-utveckling skiljer sig från standardutveckling för rich-client.
Varning
XBAP:er kräver att äldre webbläsare används, till exempel Internet Explorer och gamla versioner av Firefox. Dessa äldre webbläsare stöds vanligtvis inte i Windows 10 och Windows 11. Moderna webbläsare stöder inte längre den teknik som krävs för XBAP-appar på grund av säkerhetsrisker. Plugin-program som aktiverar XBAP:er stöds inte längre. Mer information finns i Vanliga frågor och svar om WPF-webbläsarbaserade program (XBAP).
Det här avsnittet innehåller följande avsnitt:
Skapa ett nytt XAML-webbläsarprogram (XBAP)
Det enklaste sättet att skapa ett nytt XBAP-projekt är med Visual Studio. När du skapar ett nytt projekt väljer du WPF-webbläsarprogram i listan med mallar. Mer information finns i How to: Create a New WPF Browser Application Project.
När du kör XBAP-projektet öppnas det i ett webbläsarfönster i stället för ett fristående fönster. När du felsöker XBAP från Visual Studio körs programmet med behörigheten Internetzon och utlöser därför säkerhetsfel om dessa behörigheter överskrids. Mer information finns i Security och WPF Partial Trust Security.
Anmärkning
Om du inte utvecklar med Visual Studio eller vill lära dig mer om projektfilerna kan du läsa Skapa ett WPF-program.
Distribuera en XBAP
När du skapar en XBAP innehåller utdata följande tre filer:
Fil | Beskrivning |
---|---|
Exekverbart (.exe) | Detta innehåller den kompilerade koden och har ett .exe tillägg. |
Applikationsmanifest (.manifest) | Detta innehåller metadata som är associerade med programmet och har ett .manifesttillägg. |
Distributionsmanifest (.xbap) | Den här filen innehåller den information som ClickOnce använder för att distribuera programmet och har .xbap-tillägget. |
Du distribuerar XBAPs till en webbserver, till exempel Microsoft Internet Information Services (IIS) 5.0 eller senare versioner. Du behöver inte installera .NET Framework på webbservern, men du måste registrera mime-typerna (WPF Multipurpose Internet Mail Extensions) och filnamnstilläggen. Mer information finns i Konfigurera IIS 5.0 och IIS 6.0 för att distribuera WPF-program.
Om du vill förbereda XBAP för distribution kopierar du .exe och de associerade manifesten till webbservern. Skapa en HTML-sida som innehåller en hyperlänk för att öppna distributionsmanifestet, som är den fil som har .xbap-tillägget. När användaren klickar på länken till .xbap-filen hanterar ClickOnce automatiskt mekaniken för att ladda ned och starta programmet. Följande exempelkod visar en HTML-sida som innehåller en hyperlänk som pekar på en XBAP.
<html>
<head></head>
<body>
<a href="XbapEx.xbap">Click this link to launch the application</a>
</body>
</html>
Du kan också vara värd för en XBAP i ramen på en webbsida. Skapa en webbsida med en eller flera ramar. Ange källegenskapen för en ram till distributionsmanifestfilen. Om du vill använda den inbyggda mekanismen för att kommunicera mellan värdwebbsidan och XBAP måste du vara värd för programmet i en ram. Följande exempelkod visar en HTML-sida med två bildrutor. Källan för den andra ramen är inställd på en XBAP.
<html>
<head>
<title>A page with frames</title>
</head>
<frameset cols="50%,50%">
<frame src="introduction.htm">
<frame src="XbapEx.xbap">
</frameset>
</html>
Rensa cachelagrade XBAP:er
I vissa situationer när du har återskapat och startat XBAP kan det hända att en tidigare version av XBAP öppnas. Det här beteendet kan till exempel inträffa när ditt XBAP-sammansättningsversionsnummer är statiskt och du startar XBAP från kommandoraden. I det här fallet, eftersom versionsnumret mellan den cachelagrade versionen (den version som tidigare startades) och den nya versionen förblir densamma, laddas inte den nya versionen av XBAP ned. I stället läses den cachelagrade versionen in.
I dessa situationer kan du ta bort den cachelagrade versionen med hjälp av kommandot Mage (installeras med Visual Studio eller Windows SDK) i kommandotolken. Följande kommando rensar programcachen.
Mage.exe -cc
Det här kommandot garanterar att den senaste versionen av XBAP startas. När du felsöker ditt program i Visual Studio bör den senaste versionen av XBAP startas. I allmänhet bör du uppdatera versionsnumret för distributionen med varje version. Mer information om Mage finns i Mage.exe (manifestgenerering och redigeringsverktyg).
Kommunicera med värdwebbsidan
När programmet finns i en HTML-ram kan du kommunicera med webbsidan som innehåller XBAP. Det gör du genom att hämta egenskapen HostScript för BrowserInteropHelper. Den här egenskapen returnerar ett skriptobjekt som representerar HTML-fönstret. Du kan sedan komma åt egenskaper, metoder och händelser i -fönsterobjektet med hjälp av vanlig punktsyntax. Du kan också komma åt skriptmetoder och globala variabler. I följande exempel visas hur du hämtar skriptobjektet och stänger webbläsaren.
private void Button_Click(object sender, RoutedEventArgs e)
{
// Retrieve the script object. The XBAP must be hosted in a frame or
// the HostScript object will be null.
var scriptObject = BrowserInteropHelper.HostScript;
// Call close to close the browser window.
scriptObject.Close();
}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
' Retrieve the script object The XBAP must be hosted in a frame or
' the HostScript object will be null.
Dim scriptObject = BrowserInteropHelper.HostScript
' Call close to close the browser window.
scriptObject.Close()
End Sub
Felsöka XBAP:er som använder HostScript
Om XBAP använder HostScript-objektet för att kommunicera med HTML-fönstret finns det två inställningar som du måste ange för att köra och felsöka programmet i Visual Studio. Programmet måste ha åtkomst till sin ursprungsplats och du måste starta programmet med HTML-sidan som innehåller XBAP. Följande steg beskriver hur du kontrollerar dessa två inställningar:
Öppna projektegenskaperna i Visual Studio.
På fliken Säkerhet klickar du på Avancerat.
Dialogrutan Avancerade säkerhetsinställningar visas.
Kontrollera att kryssrutan Bevilja programmet åtkomst till dess ursprungsplats är markerad och klicka sedan på OK.
På fliken Felsökning väljer du alternativet Starta webbläsare med URL och anger URL:en för HTML-sidan som innehåller XBAP.
I Internet Explorer klickar du på knappen Verktyg och väljer sedan Internetalternativ.
Dialogrutan för Internet-alternativ visas.
Klicka på fliken Avancerat.
I listan Inställningar under Securitymarkerar du kryssrutan Tillåt att aktivt innehåll körs i filer på min dator.
Klicka på OK.
Ändringarna börjar gälla när du har startat om Internet Explorer.
Försiktighet
Aktivering av aktivt innehåll i Internet Explorer kan utsätta datorn för risker. Om du inte vill ändra säkerhetsinställningarna för Internet Explorer kan du starta HTML-sidan från en server och koppla Visual Studio-felsökningsprogrammet till processen.
Säkerhetsöverväganden för XBAP
XBAP:er körs vanligtvis i en säkerhetssandbox med begränsat förtroende som är begränsad till behörighetsuppsättningen för internetzonen. Implementeringen måste därför ha stöd för delmängden av WPF-element som stöds i Internetzonen, eller så måste du höja behörigheterna för ditt program. Mer information finns i Security.
När du använder en WebBrowser kontroll i ditt program instansierar WPF internt den interna WebBrowser ActiveX-kontrollen. När ditt program är en XBAP med delvis förtroende som körs i Internet Explorer körs ActiveX-kontrollen i en dedikerad tråd i Internet Explorer-processen. Därför gäller följande begränsningar:
Den WebBrowser kontrollen bör ge ett beteende som liknar värdwebbläsaren, inklusive säkerhetsbegränsningar. Vissa av dessa säkerhetsbegränsningar kan styras via Säkerhetsinställningarna för Internet Explorer. Mer information finns i Security.
Ett undantag utlöses när en XBAP läses in mellan domäner på en HTML-sida.
Indata finns på en separat tråd från WPF-WebBrowser, så tangentbordsindata kan inte fångas upp och IME-tillståndet delas inte.
Tidpunkten eller ordningen på navigeringen kan skilja sig åt på grund av att ActiveX-kontrollen körs på en annan tråd. Till exempel avbryts inte navigeringen till en sida alltid genom att en annan navigeringsbegäran startas.
En anpassad ActiveX-kontroll kan ha problem med kommunikationen eftersom WPF-programmet körs i en separat tråd.
MessageHook aktiveras inte eftersom HwndHost inte kan underklassa ett fönster som körs i en annan tråd eller process.
Skapa en Full-Trust XBAP
Om XBAP kräver fullständigt förtroende kan du ändra ditt projekt för att aktivera den här behörigheten. Följande steg beskriver hur du aktiverar fullständigt förtroende:
Öppna projektegenskaperna i Visual Studio.
På fliken Security väljer du alternativet Det här är ett fullständigt förtroendeprogram.
Den här inställningen gör följande ändringar:
I projektfilen ändras
<TargetZone>
-elementvärdet tillCustom
.I programmanifestet (app.manifest) läggs ett
Unrestricted="true"
-attribut till i elementet "PermissionSet.<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
Distribuera en Full-Trust XBAP
När du distribuerar en XBAP med fullständigt förtroende som inte följer ClickOnce Trusted Deployment-modellen beror beteendet när användaren kör programmet på säkerhetszonen. I vissa fall får användaren en varning när de försöker installera den. Användaren kan välja att fortsätta eller avbryta installationen. I följande tabell beskrivs programmets beteende för varje säkerhetszon och vad du måste göra för att programmet ska få fullständigt förtroende.
Säkerhetszon | Beteende | Få fullständigt förtroende |
---|---|---|
Lokal dator | Automatiskt fullständigt förtroende | Ingen åtgärd krävs. |
Intranät och betrodda platser | Uppmaning om fullt förtroende | Signera XBAP med ett certifikat så att användaren ser källan i prompten. |
Internet | Misslyckas med "Förtroende har inte beviljats" | Signera XBAP med ett certifikat. |
Anmärkning
Beteendet som beskrivs i föregående tabell är för XBAP:er med fullständigt förtroende som inte följer clickOnce-modellen för betrodd distribution.
Vi rekommenderar att du använder ClickOnce Trusted Deployment-modellen för att distribuera en XBAP med fullständigt förtroende. Med den här modellen kan XBAP beviljas fullständigt förtroende automatiskt, oavsett säkerhetszon, så att användaren inte uppmanas att göra det. Som en del av den här modellen måste du signera din ansökning med ett certifikat från en betrodd certifikatutfärdare. Mer information finns i Översikt över distribution av betrodda program och Introduktion till kodsignering.
Prestandaöverväganden för XBAP-starttid
En viktig aspekt av XBAP-prestanda är starttiden. Om en XBAP är den första WPF-applikationen som läses in kan kallstarttid vara tio sekunder eller mer. Det beror på att förloppssidan återges av WPF, och både CLR och WPF måste kallstartas för att programmet ska kunna visas.
Från och med .NET Framework 3.5 SP1 minimeras XBAP-kallstartstiden genom att en ohanterad förloppssida visas tidigt i distributionscykeln. Förloppssidan visas nästan omedelbart efter att programmet har startats, eftersom det visas med inbyggd värdkod och återges i HTML.
Dessutom förbättrar förbättrad samtidighet i ClickOnce-nedladdningssekvensen starttiden med upp till tio procent. När ClickOnce har hämtat och verifierat manifest startar programnedladdningen och förloppsindikatorn börjar uppdateras.
Se även
.NET Desktop feedback