Sisi server Blazor di belakang proksi terbalik 404

10

Saya memiliki aplikasi sisi server yang di-host pada IIS di belakang proxy terbalik (menggunakan ARR).

Saya sudah mencoba semua yang saya bisa pikirkan, tetapi saya terus mendapatkan 404

_framework / blazor.server.js

Href basis saya disetel ke "/ subsite /":

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

dan semua nilai src saya relatif seperti ini:

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

Setiap skrip lainnya memuat dengan baik, BAHKAN data _konten, tetapi bukan blazor.server.js.

Saya mencoba trik PathBase lama untuk aplikasi MVC juga tanpa hasil:

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

Adakah yang bisa memberi tahu saya cara membuat Blazor menyadari di mana harus meletakkan blazor.server.js dalam skenario proksi terbalik?

Dynde
sumber
1
blazor.server.js adalah sumber daya yang disematkan. Anda dapat mencoba mendapatkan salinan file dan menyajikannya secara statis seperti file js lainnya. Tetapi meskipun demikian ada banyak sinyal-r obrolan antara server dan browser. Tidak yakin bagaimana cara kerjanya di pengaturan Anda.
ravi
Hmm. Saya tidak benar-benar mengerti itu, karena komponen-komponennya adalah sumber daya yang tertanam juga, hidup dalam _content, tetapi ia mendapati mereka baik-baik saja. Saya akan mencoba meraihnya dan menyajikannya secara statis, tapi ini sepertinya bug yang sebenarnya - maksud saya, bagaimana Anda bisa lupa untuk mendukung subsitus reverse proxy pada 2019
Dynde
Apakah Anda memiliki pencatatan yang tersedia untuk melihat jalur permintaan mana (dan jika) berakhir dengan ASP.NET?
Henk Holterman

Jawaban:

-1

Dari dokumen .

Tulis ulang URL untuk perutean yang benar

Mengalihkan permintaan untuk komponen halaman di aplikasi Blazor WebAssembly tidak semudah merutekan permintaan di Blazor Server, aplikasi yang dihosting. Pertimbangkan aplikasi Blazor WebAssembly dengan dua komponen:

  • Main.razor - Memuat pada akar aplikasi dan berisi tautan ke Aboutkomponen ( href="About").
  • About.razor - Aboutkomponen.

Saat dokumen default aplikasi diminta menggunakan bilah alamat browser (misalnya, https://www.contoso.com/):

  • Browser membuat permintaan.
  • Halaman default dikembalikan, yang biasanya index.html .
  • index.html mem-bootstrap aplikasi.
  • Router Blazor memuat, dan Mainkomponen Razor ditampilkan.

Di halaman Utama, memilih tautan ke komponen About berfungsi di klien karena router Blazor menghentikan browser dari membuat permintaan di Internet www.contoso.comuntuk Aboutdan melayani Aboutkomponen yang dirender itu sendiri. Semua permintaan untuk titik akhir internal dalam aplikasi Blazor WebAssembly bekerja dengan cara yang sama: Permintaan tidak memicu permintaan berbasis browser ke sumber daya yang dihosting server di Internet. Router menangani permintaan secara internal.

Jika permintaan dibuat menggunakan bilah alamat browser untuk www.contoso.com/About, permintaan gagal. Tidak ada sumber daya semacam itu di host Internet aplikasi, jadi respons 404 - Not Found dikembalikan.

Karena browser membuat permintaan ke host berbasis Internet untuk halaman sisi klien, server web dan layanan hosting harus menulis ulang semua permintaan untuk sumber daya tidak secara fisik di server ke halaman index.html . Ketika index.html dikembalikan, router Blazor aplikasi mengambil alih dan merespons dengan sumber daya yang benar.

Saat menyebarkan ke server IIS, Anda dapat menggunakan Modul Penulisan Ulang URL dengan file web.config aplikasi yang diterbitkan . Untuk informasi lebih lanjut, lihat bagian IIS .


Mungkin Anda bisa mencoba untuk mengaktifkan proxy yang maju di IIS manager-> server node-> aplikasi request routing cache-> proxy-> enable.

Jika Anda hanya memiliki satu situs web, Anda bisa menambahkan situs web ke server ARR server dan kemudian akan membuat aturan perutean secara otomatis. Akan lebih mudah untuk memantau server back-end dengan pemeriksaan kesehatan.

Apakah peringatan ARR ini menyebabkan 404 saya?

Hamza Rashid
sumber
Yah, sejauh yang saya bisa lihat - artikel itu berputar di sekitar Blazor WebAssembly, dan saya menggunakan sisi server. Selain itu, IIS saya sudah menggunakan fitur proksi maju dari ARR (karena ini adalah bagaimana saya melakukan reverse proxy dalam pengaturan saya).
Dynde