Tôi đang làm việc thông qua dự án ASP.NET và đột nhiên ngừng hoạt động Postback. Tôi biết! Đây đơn giản chỉ là do sự tương tác với ứng dụng Form web ASP.NET, và nó không LÀM VIỆC! Cái quái gì xảy ra? Ý tôi là, tôi không thay đổi bất cứ điều gì .. Tôi chỉ muốn Form default.aspx của tôi xử lý khi nhấn nút. Quả là khó khăn?!
Tôi đã nghiên cứu ngày này qua ngày khác. Tôi đã mang add-in hoặc thư viện đến dự án của tôi để chặn postback nắm bắt được các sự kiện click? Tôi đã phân tích truy cập, để đảm bảo rằng nội dung Form đã thực sự được gửi đúng lại cho máy chủ. Tất cả mọi thứ đều tốt.
Bước phân tích tiếp theo của tôi là coi bộ sưu tập Request.Form. Tôi thấy __EVENTARGUMENT đang phổ biến. Khi tôi mở cửa sổ ngay và kiểm tra Request.Form, đây là những gì tôi thấy:
Làm thế nào collection Request.Form trống không?
Tôi bắt đầu suy nghĩ về các đường dẫn ASP.NET, và Tôi phát hiện nguyên nhân: FriendlyUrls.
Có một điều thú vị xảy ra khi Form web cố gắng gửi trở lại vào trang web thông qua FriendlyUrls quản lý và thiếu tên tập tin. Đây có thể ở bất kỳ trang nào sau đây trong trang web của bạn:
Bạn có được ý tưởng. Những trang này vì lý do không xử lý postback đúng. Với ý nghĩ đó, Tôi thêm vào xử lý sự kiện sau đây đến global.asax.cs:
void Application_BeginRequest(object sender, EventArgs e)
{
var app = (HttpApplication)sender;
if (app.Context.Request.Url.LocalPath.EndsWith("/"))
{
app.Context.RewritePath(
string.Concat(app.Context.Request.Url.LocalPath, "default"));
}
}
Cùng với đó, trang web của tôi bắt đầu gửi bài trở lại đúng.
Xin lưu ý: bạn sẽ gặp vấn đề này với các dự án ASP.NET mặc định với Form web khi FriendlyUrls được kích hoạt.