Blazor sunucu tarafı ters proxy 404 arkasında


10

IIS'de ters proxy (ARR kullanarak) arkasında barındırılan bir blazor sunucu tarafı uygulaması var.

Aklıma gelen her şeyi denedim ama 404

_framework / blazor.server.js

Temel href "/ subsite /" olarak ayarlanmış:

<base href="https://stackoverflow.com/subsite/" />

ve tüm src değerlerim göreceli:

<script src="_framework/blazor.server.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="animations.js"></script>

Diğer tüm komut dosyaları, _content verilerini BİRLİKTE iyi yükler, ancak blazor.server.js dosyasını yüklemez.

MVC uygulamaları için eski PathBase hilesini de başarılı olamadım:

if (!env.IsDevelopment()) {
    app.Use((context, next) => {
        context.Request.PathBase = new PathString("/subsite");
        return next();
    });
}

Birisi bana Blazor'un blazor.server.js'yi ters proxy senaryosuna nereye koyacağını nasıl anlatacağını söyleyebilir mi?


1
blazor.server.js katıştırılmış bir kaynaktır. dosyanın bir kopyasını alıp statik olarak diğer js dosyaları gibi sunmayı deneyebilirsiniz. Ancak o zaman bile sunucu ve tarayıcı arasında çok fazla sinyal-r sohbet var. Kurulumunuzda nasıl çalışacağından emin değilim.
ravi

Hmm. Gerçekten anlamıyorum, çünkü bileşenler de içerikte yerleşik, _içerik içinde yaşıyor, ama onları gayet iyi buluyor. Onu yakalamaya ve statik olarak sunmaya çalışacağım, ancak bu gerçek bir hata gibi görünüyor - yani, 2019'da ters proxy alt sitelerini desteklemeyi nasıl unutabilirsiniz
Dynde

Hangi (ve if) istek yolunun ASP.NET ile sonuçlandığını görmek için herhangi bir günlük kaydınız var mı?
Henk Holterman

Yanıtlar:



-1

Gönderen docs .

URL'leri doğru yönlendirme için yeniden yazın

Blazor WebAssembly uygulamasındaki sayfa bileşenleri için yönlendirme istekleri, barındırılan bir Blazor Sunucusundaki yönlendirme istekleri kadar basit değildir. İki bileşenli bir Blazor WebAssembly uygulamasını düşünün:

  • Main.razor - Uygulamanın kök dizinine yüklenir ve Aboutbileşene ( href="About") bir bağlantı içerir .
  • About.razor - Aboutbileşen.

Uygulamanın varsayılan belgesi, tarayıcının adres çubuğu kullanılarak istendiğinde (örneğin, https://www.contoso.com/):

  • Tarayıcı bir istekte bulunuyor.
  • Genellikle index.html olan varsayılan sayfa döndürülür .
  • index.html uygulamayı başlatır.
  • Blazor'un yönlendiricisi yüklenir ve Razor Mainbileşeni oluşturulur.

Ana sayfasında, istemci üzerinde Hakkında bileşen çalışmalara bağlantısını seçerek Blazor yönlendirici için internette bir istekte tarayıcının durur çünkü www.contoso.comiçin Aboutve oluşturulan hizmet veren Aboutbileşeni kendisi. Blazor WebAssembly uygulamasındaki tüm iç uç nokta istekleri aynı şekilde çalışır: İstekler, Internet'teki sunucu tarafından barındırılan kaynaklara tarayıcı tabanlı istekleri tetiklemez. Yönlendirici istekleri dahili olarak ele alır.

Tarayıcının adres çubuğu kullanılarak bir istek yapılırsa www.contoso.com/Aboutistek başarısız olur. Uygulamanın Internet ana bilgisayarında böyle bir kaynak yoktur, bu nedenle 404 - Bulunamadı yanıtı döndürülür.

Tarayıcılar, istemci tarafı sayfaları için Internet tabanlı ana bilgisayarlara istekte bulunduğundan, web sunucuları ve barındırma hizmetleri, sunucuda fiziksel olarak bulunmayan tüm kaynak isteklerini index.html sayfasına yeniden yazmalıdır . Ne zaman index.html döndürülür, uygulamanın Blazor yönlendirici üstlenir ve doğru kaynağı ile yanıt verir.

Bir IIS sunucusuna dağıtım yaparken, URL Yeniden Yazma Modülünü uygulamanın yayınlanan web.config dosyasıyla kullanabilirsiniz. Daha fazla bilgi için IIS bölümüne bakın.


Belki de IIS yöneticisi-> sunucu düğümü-> uygulama isteği yönlendirme önbelleği-> proxy-> etkinleştirmesinde ileri proxy'yi etkinleştirmeyi deneyebilirsiniz.

Yalnızca bir web siteniz varsa, web sitesini ARR sunucu grubuna ekleyebilir ve ardından otomatik olarak yönlendirme kuralını oluşturacaktır. Arka uç sunucusunu sağlık kontrolü ile izlemek uygun olacaktır.

Bu ARR uyarısı 404'üme neden oluyor mu?


Gördüğüm kadarıyla, bu makale Blazor WebAssembly etrafında dönüyor ve sunucu tarafını kullanıyorum. Dahası, IIS'm zaten ARR'nin ileri proxy özelliğini kullanıyor (kurulumumda bu şekilde ters proxy yapıyorum).
Dynde
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.