Phần mềm trung gian OWIN của tôi giống như thế này. (Framework là ASP.NET Web API).Thay đổi đối tượng phản hồi từ OWIN Middleware
public class MyMiddleware : OwinMiddleware
{
public MyMiddleware(OwinMiddleware next) : base(next) { }
public override async Task Invoke(OwinRequest request, OwinResponse response)
{
var header = request.GetHeader("X-Whatever-Header");
await Next.Invoke(request, response);
response.SetHeader("X-MyResponse-Header", "Some Value");
response.StatusCode = 403;
}
}
Câu hỏi:
Đó có phải là thực tế nên xuất phát từ
OwinMiddleware
? Tôi thấy rằng trong nguồn Katana, một số lớp trung gian xuất phát từOwinMiddleware
và một số thì không.Tôi có thể thấy tiêu đề yêu cầu không sao. Đặt tiêu đề phản hồi hoặc mã trạng thái sau
Next.Invoke
trong phần mềm trung gian của tôi không ảnh hưởng đến phản hồi được trả về cho khách hàng. Nhưng nếu tôi đặt tiêu đề phản hồi hoặc trạng thái trước cuộc gọiNext.Invoke
, phản hồi với tiêu đề và trạng thái tôi đặt được trả về cho ứng dụng khách. Cách thích hợp để thiết lập những điều này là gì?
Cảm ơn Youssef. Đối với điểm số 2, có một mã ví dụ trong nguồn Katana hoặc một nơi khác mà tôi có thể xem xét, từ điểm thực hành tốt nhất của pt không? Tôi tin rằng, những gì tôi yêu cầu là một nhu cầu khá phổ biến và mọi người phải làm luồng này chuyển đổi chỉ để đặt tiêu đề phản hồi, nếu chúng ta sử dụng phần mềm trung gian OWIN? Mọi con trỏ sẽ được đánh giá cao. – Badri
Tôi có thể giải quyết sự cố bằng cách làm theo đề xuất của bạn nhưng không có cách nào dễ dàng? Tôi có nghĩa là đây là quá nhiều công việc để chỉ cần thiết lập một tiêu đề phản ứng trên đường ra, đặc biệt là nếu một được sử dụng để xử lý tin nhắn Web API. – Badri
Cập nhật câu trả lời bằng một phương pháp đơn giản hơn. Xin vui lòng cho tôi biết nếu nó hoạt động. –