Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için .NET ve .NET Core Destek Politikası'na bakın. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.
Bu makalede, yapılandırma kılavuzu da dahil olmak üzere ASP.NET Core uygulamalarında Blazor açıklanmaktadır.
Uygulama temel yolu, uygulamanın kök URL yoludur. Uygulamalarda başarılı yönlendirme Blazor , varsayılan uygulama temel /yolunda olmayan tüm kök URL yolları için çerçeve yapılandırması gerektirir.
Aşağıdaki ASP.NET Core uygulamasını ve Blazor alt uygulamasını göz önünde bulundurun:
- ASP.NET Core uygulamasının adı
MyApp:- Uygulama fiziksel olarak
d:/MyAppkonumunda bulunur. - İstekler
https://www.contoso.com/{MYAPP RESOURCE}adresinden alınır.
- Uygulama fiziksel olarak
-
Blazor adlı
CoolAppbir uygulama, uygulamasının alt uygulamasıdırMyApp:- Alt uygulama fiziksel olarak
d:/MyApp/CoolAppkonumunda bulunur. - İstekler
https://www.contoso.com/CoolApp/{COOLAPP RESOURCE}adresinden alınır.
- Alt uygulama fiziksel olarak
CoolApp için ek yapılandırma belirtilmeden, bu senaryodaki alt uygulamanın sunucuda nerede bulunduğu hakkında hiçbir bilgisi yoktur. Örneğin uygulama, göreli /CoolApp/ URL yolunda bulunduğunu bilmeden kaynaklarına doğru göreli URL'ler üretemez. Bu senaryo, bir uygulama kök URL yolunda barındırılmıyorsa çeşitli barındırma ve ters ara sunucu senaryolarında da geçerlidir.
Arka plan
Yer işareti etiketinin hedefi (href) iki uç noktadan biriyle oluşturulabilir:
Bir düzen (atlanırsa varsayılan olarak sayfanın düzenine), konak, bağlantı noktası ve yol ya da yalnızca eğik çizgi (
/) ve ardından yol içeren mutlak konumlar.Örnekler:
https://example.com/a/b/cveya/a/b/cYalnızca bir yol içeren ve eğik çizgi (
/) ile başlamayan göreli konumlar. Bunlar, belirtilmişse geçerli belge URL'sine veya etiketin<base>değerine göre çözümlenir.Örnek:
a/b/c
Yapılandırılmış bir uygulama temel yolunda sondaki eğik çizginin (/) varlığı, uygulamanın URL'lerinin temel yolunu hesaplamak için önemlidir. Örneğin, https://example.com/a temel yolu https://example.com/olurken https://example.com/a/ , sondaki eğik çizginin temel yolu https://example.com/avardır.
ASP.NET Core uygulamalarında Blazor ile ilgili bağlantı kaynakları için:
- Bileşenlerdeki Razor (
.razor) URL'ler genellikle görelidir. - Betikler () gibi betiklerdeki Blazor
blazor.*.jsURL'ler belgeye göre belirlenir.
- Farklı belgelerin içinde işleniyorsanız her zaman mutlak olması gereken dosyada
_Host.cshtml()Blazor Server el ile yazılmış URL'ler. - Bileşenlerdeki Razor (
.razor) URL'ler genellikle görelidir. - Betikler () gibi betiklerdeki Blazor
blazor.*.jsURL'ler belgeye göre belirlenir.
Farklı belgelerden (örneğin ve Blazor) bir /Admin/B/C/ uygulama işleniyorsa, /Admin/D/E/ uygulama temel yolunu hesaba katmalısınız, aksi takdirde uygulama her belgede işlendiğinde ve kaynaklar yanlış URL'lerden getirildiğinde temel yol farklıdır.
Göreli bağlantıları doğru çözümlemenin zorluğuyla başa çıkmak için iki yaklaşım vardır:
- Kök olarak işlendikleri belgeyi kullanarak kaynakları dinamik olarak eşleyin.
- Belge için tutarlı bir temel yol ayarlayın ve kaynakları bu temel yol altında eşleyin.
her belge için gezintiyi farklı hale getirdiğinden ilk seçenek daha karmaşıktır ve en tipik yaklaşım değildir. Bir sayfayı /Something/Elseişlemek için aşağıdaki örneği göz önünde bulundurun:
- altında
/Admin/B/C/işlenir, sayfa bir yolu/Admin/B/C/Something/Elseile işlenir. - altında
/Admin/D/E/işlenir, sayfa ile aynı yolda
İlk yaklaşımda, yönlendirme teklifleri IDynamicEndpointMetadata ve MatcherPolicyile birlikte, çalışma zamanında isteklerin nasıl yönlendirildiğine karar veren tamamen dinamik bir çözüm uygulamak için temel olabilir.
Uygulama, her zamanki yaklaşım olan ikinci seçenek için belgedeki temel yolu ayarlar ve sunucu uç noktalarını taban altındaki yollara eşler. Aşağıdaki kılavuz bu yaklaşımı benimser.
Sunucu tarafı Blazor
Dosyada SignalR yolunu Blazor geçirerek sunucu tarafı MapBlazorHub uygulamasının hub'ını eşleyinProgram. Varsayılan Blazor hub yolu /_blazor'dir ve aşağıdaki örnek, varsayılan hub'ın temel yolunu base/path olarak ayarlar.
app.MapBlazorHub("base/path/_blazor");
Kullanmanın MapBlazorHub avantajı, yalnızca somut yollar gibi değil, desenleri "{tenant}" eşleyebilirsiniz.
Ayrıca uygulama dallandırılmış ara yazılım işlem hattınaSignalRbir sanal klasördeyken hub'ı eşleyebilirsiniz. Aşağıdaki örnekte, istekleri /base/path/ 'nin hub'ı Blazor tarafından SignalRişlenir:
app.Map("/base/path", subapp => {
subapp.UsePathBase("/base/path");
subapp.UseRouting();
subapp.UseAntiforgery();
subapp.UseEndpoints(endpoints => {
endpoints.MapBlazorHub("/base/path/_blazor");
endpoints.MapStaticAssets();
endpoints.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
});
});
Uyarı
Varsayılan Blazor hub yolu şeklindedir /_blazor.
<base> Etiketi, Uygulama temel yolunu yapılandırma bölümündeki yönergelere göre yapılandırın.
Barındırılan Blazor WebAssembly
Uygulama barındırılan Blazor WebAssembly bir uygulamaysa:
- projesinde Server (
Program.cs):- yolunu UseBlazorFrameworkFiles ayarlayın (örneğin,
app.UseBlazorFrameworkFiles("/base/path");). - çağrısı yapılandırma UseStaticFiles (örneğin,
app.UseStaticFiles("/base/path");).
- yolunu UseBlazorFrameworkFiles ayarlayın (örneğin,
- Projede Client :
- Proje dosyasında statik web varlıklarını sunma yoluyla eşleşecek şekilde yapılandırın
<StaticWebAssetBasePath>(örneğin,<StaticWebAssetBasePath>base/path</StaticWebAssetBasePath>). -
<base>Etiketi, Uygulama temel yolunu yapılandırma bölümündeki yönergelere göre yapılandırın.
- Proje dosyasında statik web varlıklarını sunma yoluyla eşleşecek şekilde yapılandırın
Barındırılan Blazor WebAssembly bir çözümde birden çok Blazor WebAssembly uygulama barındırma örneği için bkzBlazor WebAssembly için etki alanı/bağlantı noktası barındırma ve alt yol barındırma yaklaşımlarının açıklandığı Birden çok barındırılan ASP.NET Core Blazor WebAssembly uygulaması.
Tek başına Blazor WebAssembly
Tek başına Blazor WebAssembly bir uygulamada, Uygulama temel yolunu<base>göre yalnızca etiket yapılandırılır.
Uygulama temel yolunu yapılandırma
Uygulamanın temel yolu için yapılandırma sağlamak içinBlazor, göreli kök yol https://www.contoso.com/CoolApp/olarak da adlandırılan uygulama temel yolunu (<base>) ayarlayın.
Uygulama temel yolunu yapılandırarak, kök dizinde olmayan bir bileşen uygulamanın kök yoluna göre URL'ler oluşturabilir. Dizin yapısının farklı düzeylerindeki bileşenler, uygulama genelindeki konumlarda diğer kaynaklara bağlantılar oluşturabilir. Uygulama temel yolu, bağlantının href hedefinin uygulama temel yolu URI alanı içinde olduğu seçili köprüleri kesmek için de kullanılır. Bileşen iç Router gezintiyi işler.
<base> etiketini <head> öğelerinin <head> öznitelikleri gibi URL'ler olan öznitelik değerlerine sahip öğelerin önüne işaretlemeye ( href içeriğin<link>) yerleştirin.
Birçok barındırma senaryosunda, uygulamanın göreli URL yolu uygulamanın köküdür. Bu varsayılan durumlarda, uygulamanın göreli URL temel yolu içerikte/<base href="/" /> olduğu gibi <head> yapılandırılır.
Birçok barındırma senaryosunda, uygulamanın göreli URL yolu uygulamanın köküdür. Bu varsayılan durumlarda, uygulamanın göreli URL temel yolu içerikte <head>aşağıdaki gibidir:
-
Blazor Server:
~/olarak<base href="~/" />yapılandırıldı. -
Blazor WebAssembly:
/olarak<base href="/" />yapılandırıldı.
Uyarı
GitHub Sayfaları ve IIS alt uygulamaları gibi bazı barındırma senaryolarında, uygulama temel yolu sunucunun uygulamanın göreli URL yoluna ayarlanmalıdır.
Sunucu tarafı Blazor bir uygulamada aşağıdaki yaklaşımı kullanın:
<base>Uygulamanın temel yolunu (içeriğin konumu<head>) ayarlamak için etiketini kullanın:<base href="/CoolApp/">Sondaki eğik çizgi gereklidir.
uygulamanın istek işleme hattında ilk çağrısını yaptıktan hemen sonra (
Program.csWebApplicationBuilder), istek yolu ile etkileşen aşağıdaki ara yazılımların temel yolunu ayarlayın.app.UsePathBase("/CoolApp");Uygulamayı yerel olarak çalıştırmak UsePathBase istediğinizde de Blazor Server çağırmanız önerilir. Örneğin, başlatma URL'sini
Properties/launchSettings.jsoniçinde sağlayın:"launchUrl": "https://localhost:{PORT}/CoolApp",Yukarıdaki örnekte
{PORT}yer tutucusu,applicationUrlyapılandırma yolundaki güvenli bağlantı noktasıyla eşleşen bağlantı noktasıdır. Aşağıdaki örnek, 7279 numaralı bağlantı noktasındaki bir uygulamanın tam başlatma profilini gösterir:"BlazorSample": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:7279;http://localhost:5279", "launchUrl": "https://localhost:7279/CoolApp", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }Dosya hakkında
launchSettings.jsondaha fazla bilgi için bkz. ASP.NET Core çalışma ortamı. Uygulama temel yolları ve barındırma hakkında Blazor ek bilgi için bkz<base href="/" />. veya MVC tümleştirmesi için Blazor temel etiket alternatifi (dotnet/aspnetcore #43191).
Tek başına Blazor WebAssembly (
wwwroot/index.html):<base href="/CoolApp/">Sondaki eğik çizgi gereklidir.
Barındırılan Blazor WebAssembly (Client proje,
wwwroot/index.html):<base href="/CoolApp/">Sondaki eğik çizgi gereklidir.
ProjedeServer, uygulamanın istek işleme işlem hattında () oluşturulduktan hemen sonra UsePathBase () çağrısı
Program.csyapın ve istek yoluyla etkileşim kuran aşağıdaki ara yazılımların temel yolunu yapılandırın:app.UsePathBase("/CoolApp");
Uyarı
kullanırken WebApplication (bkz. .NET 5'te ASP.NET Core'dan .NET 6'ya geçiş), app.UseRouting yönlendirme ara yazılımının yolları eşleştirmeden önce değiştirilen yolu gözlemlemesi için bundan sonra UsePathBase çağrılmalıdır. Aksi takdirde yollar, UsePathBase ve Yönlendirme makalelerinde açıklandığı gibi tarafından yollar yeniden yazmadan önce eşleştirilir.
Uygulama genelindeki bağlantıların ön ekini eğik çizgiyle eklemeyin. Yol kesimi ayırıcısı kullanmaktan kaçının veya nokta-eğik çizgi (./) göreli yol gösterimini kullanın:
-
Yanlış:
<a href="/account"> -
Doğru:
<a href="account"> -
Doğru:
<a href="./account">
Hizmetle Blazor WebAssemblyHttpClient
-
Yanlış:
var rsp = await client.GetFromJsonAsync("/api/Account"); -
Doğru:
var rsp = await client.GetFromJsonAsync("api/Account");
Gezinti Yöneticisi göreli bağlantılarının önüne eğik çizgi eklemeyin. Yol kesim ayırıcısı kullanmaktan kaçının veya nokta eğik çizgi (./) göreli yol gösterimi kullanın (Navigation eklenen NavigationManagerbir ):
-
Yanlış:
Navigation.NavigateTo("/other"); -
Doğru:
Navigation.NavigateTo("other"); -
Doğru:
Navigation.NavigateTo("./other");
Azure/IIS barındırma için tipik yapılandırmalarda, genellikle ek yapılandırma gerekli değildir. IIS dışı bazı barındırma ve ters ara sunucu barındırma senaryolarında ek Statik Dosya Ara Yazılım yapılandırması gerekebilir:
- Statik dosyaları doğru bir şekilde sunmak için (örneğin,
app.UseStaticFiles("/CoolApp");). - Betiği (Blazor) sunmak
_framework/blazor.*.jsiçin. Daha fazla bilgi için bkz. ASP.NET Core Blazor statik dosyaları.
Kök olmayan göreli URL yolu olan bir Blazor WebAssembly uygulaması için (örneğin, <base href="/CoolApp/">), uygulama yerel olarak çalıştırıldığında kaynaklarını bulamıyor. Yerel geliştirme ve test sırasında bu sorunun üstesinden gelmek için, çalışma zamanında etiketinin href değeriyle eşleşen bir <base> bağımsız değişkeni sağlayabilirsiniz. Sondaki eğik çizgiyi eklemeyin. Uygulamayı yerel olarak çalıştırırken yol temeli bağımsız değişkenini geçirmek için uygulamanın dizininden (veya dotnet watch) komutunu şu seçenekle yürütebilirsiniz:dotnet run--pathbase
dotnet watch --pathbase=/{RELATIVE URL PATH (no trailing slash)}
Blazor WebAssembly (/CoolApp/) öğesinin göreli URL yolu ile bir <base href="/CoolApp/"> uygulaması için, komut:
dotnet watch --pathbase=/CoolApp
Uygulamanın başlatma profilini ( veya ) ile pathbase el ile yerine otomatik olarak belirtmek dotnet watch üzere yapılandırmayı dotnet run tercih ediyorsanız özelliğini içinde commandLineArgsayarlayın.Properties/launchSettings.json Aşağıda başlatma URL'si (launchUrl) de yapılandırılır:
"commandLineArgs": "--pathbase=/{RELATIVE URL PATH (no trailing slash)}",
"launchUrl": "{RELATIVE URL PATH (no trailing slash)}",
Örnek olarak CoolApp kullanmak :
"commandLineArgs": "--pathbase=/CoolApp",
"launchUrl": "CoolApp",
dotnet watch (veya dotnet run) --pathbase seçeneğini veya temel yolu ayarlayan bir başlatma profili yapılandırmasını kullanarak, Blazor WebAssembly uygulama konumunda http://localhost:port/CoolAppyerel olarak yanıt verir.
Dosya hakkında launchSettings.json daha fazla bilgi için bkz. ASP.NET Core çalışma ortamı. Uygulama temel yolları ve barındırma hakkında Blazor ek bilgi için bkz<base href="/" />. veya MVC tümleştirmesi için Blazor temel etiket alternatifi (dotnet/aspnetcore #43191).
Yapılandırmadan uygulama temel yolunu alma
Aşağıdaki kılavuzda, etiketin yolunun farklı <base> için bir uygulama ayarları dosyasından nasıl alınacakları açıklanmaktadır.
Uygulama ayarları dosyasını uygulamaya ekleyin. Aşağıdaki örnek, ortam içindir Staging (appsettings.Staging.json):
{
"AppBasePath": "staging/"
}
Sunucu tarafı Blazor bir uygulamada, içerikteki <head>yapılandırmadan temel yolu yükleyin:
@inject IConfiguration Config
...
<head>
...
<base href="/@(Config.GetValue<string>("AppBasePath"))" />
...
</head>
Alternatif olarak, sunucu tarafı bir uygulama için UsePathBaseyapılandırmadan değerini alabilir. Aşağıdaki kodu uygulamanın istek işleme işlem hattına (Program.cs) oluşturulduktan hemen sonra WebApplicationBuilder (builder.Build()) yerleştirin. Aşağıdaki örnekte yapılandırma anahtarı AppBasePathkullanılır:
app.UsePathBase($"/{app.Configuration.GetValue<string>("AppBasePath")}");
İstemci tarafı Blazor WebAssembly uygulamasında:
Yüklenecek yapılandırma değeri yoksa (örneğin hazırlama dışı ortamlarda), yukarıdaki href çözüm kök yoluna /gider.
Bu bölümdeki örnekler, uygulama ayarlarından uygulama temel yolunu sağlama konusuna odaklanır, ancak yolu IConfiguration okuma yaklaşımı tüm yapılandırma sağlayıcıları için geçerlidir. Daha fazla bilgi için aşağıdaki kaynaklara bakın:
- ASP.NET Core Blazor yapılandırma
- ASP.NET Core'da Yapılandırması
ASP.NET Core