Phía máy chủ Blazor phía sau proxy ngược 404


10

Tôi có một ứng dụng phía máy chủ blazor được lưu trữ trên IIS đằng sau một proxy ngược (sử dụng ARR).

Tôi đã thử mọi thứ tôi có thể nghĩ ra, nhưng tôi vẫn tiếp tục nhận được 404

_framework / blazor.server.js

Cơ sở của tôi được đặt thành "/ trang con /":

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

và tất cả các giá trị src của tôi là tương đối như thế này:

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

Mọi tập lệnh khác đều tải tốt, NGAY CẢ dữ liệu _content, nhưng không phải là blazor.server.js.

Tôi cũng đã thử mẹo PathBase cũ cho các ứng dụng MVC nhưng không thành công:

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

Ai đó có thể cho tôi biết làm thế nào để Blazor nhận ra nơi đặt blazor.server.js trong một kịch bản proxy ngược không?


1
blazor.server.js là một tài nguyên nhúng. bạn có thể thử lấy một bản sao của tệp và phục vụ tĩnh nó như bất kỳ tệp js nào khác. Nhưng ngay cả sau đó có rất nhiều cuộc trò chuyện tín hiệu giữa máy chủ và trình duyệt. Không chắc nó sẽ hoạt động như thế nào trong thiết lập của bạn.
ravi

Hừm. Tôi thực sự không hiểu rằng, vì các thành phần cũng được nhúng tài nguyên, sống trong _content, nhưng nó thấy chúng vẫn ổn. Tôi sẽ thử lấy nó và phục vụ nó một cách tĩnh, nhưng đây có vẻ như là một lỗi thực sự - ý tôi là, làm thế nào bạn có thể quên hỗ trợ các trang con proxy ngược vào năm 2019
Dynde

Bạn có bất kỳ đăng nhập có sẵn để xem đường dẫn yêu cầu (và nếu) kết thúc với ASP.NET không?
Henk Holterman

Câu trả lời:



-1

Từ tài liệu .

Viết lại URL để định tuyến chính xác

Yêu cầu định tuyến cho các thành phần trang trong ứng dụng Blazor WebAssugging không đơn giản như yêu cầu định tuyến trong Máy chủ Blazor, ứng dụng được lưu trữ. Hãy xem xét một ứng dụng Blazor WebAssugging với hai thành phần:

  • Main.razor - Tải ở thư mục gốc của ứng dụng và chứa liên kết đến Aboutthành phần ( href="About").
  • About.razor - Aboutthành phần.

Khi tài liệu mặc định của ứng dụng được yêu cầu sử dụng thanh địa chỉ của trình duyệt (ví dụ https://www.contoso.com/:):

  • Trình duyệt đưa ra yêu cầu.
  • Trang mặc định được trả về, thường là index.html .
  • index.html bootstraps ứng dụng.
  • Tải bộ định tuyến của Blazor và Mainthành phần Dao cạo được hiển thị.

Trong trang Chính, chọn liên kết đến thành phần Giới thiệu hoạt động trên máy khách vì bộ định tuyến Blazor ngăn trình duyệt thực hiện yêu cầu trên Internet để www.contoso.comthực hiện Aboutvà tự phục vụ Aboutthành phần được kết xuất . Tất cả các yêu cầu cho điểm cuối nội bộ trong ứng dụng Blazor WebAssugging hoạt động theo cùng một cách: Yêu cầu không kích hoạt các yêu cầu dựa trên trình duyệt đến tài nguyên được lưu trữ trên máy chủ trên Internet. Các bộ định tuyến xử lý các yêu cầu nội bộ.

Nếu một yêu cầu được thực hiện bằng thanh địa chỉ của trình duyệt www.contoso.com/About, yêu cầu không thành công. Không có tài nguyên như vậy tồn tại trên máy chủ Internet của ứng dụng, do đó, phản hồi 404 - Không tìm thấy được trả về.

Vì trình duyệt thực hiện yêu cầu máy chủ lưu trữ trên Internet cho các trang phía máy khách, máy chủ web và dịch vụ lưu trữ phải viết lại tất cả các yêu cầu tài nguyên không thực tế trên máy chủ sang trang index.html . Khi index.html được trả về, bộ định tuyến Blazor của ứng dụng sẽ tiếp quản và phản hồi với tài nguyên chính xác.

Khi triển khai đến máy chủ IIS, bạn có thể sử dụng Mô-đun Viết lại URL với tệp web.config được xuất bản của ứng dụng . Để biết thêm thông tin, xem phần IIS .


Có lẽ bạn có thể thử bật proxy chuyển tiếp trong trình quản lý IIS-> nút máy chủ-> bộ đệm định tuyến yêu cầu ứng dụng-> proxy-> bật.

Nếu bạn chỉ có một trang web, bạn chỉ có thể thêm trang web vào cụm máy chủ ARR và sau đó nó sẽ tự động tạo quy tắc định tuyến. Sẽ thuận tiện để theo dõi máy chủ back-end với kiểm tra sức khỏe.

Đây có phải là cảnh báo ARR gây ra 404 của tôi không?


Chà, theo như tôi có thể thấy - bài viết đó xoay quanh Blazor WebAssugging, và tôi đang sử dụng phía máy chủ. Hơn nữa, IIS của tôi đã sử dụng tính năng proxy chuyển tiếp của ARR (vì đây là cách tôi thực hiện proxy ngược trong thiết lập của mình).
Dynde
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.