Tôi đã sử dụng mô-đun UrlRewriting.Net trong vài năm nay mà không gặp bất kỳ sự cố nào trong Windows XP và Windows 2003. Tôi vừa mới nâng cấp máy tính ở nhà lên Windows 7 và bắt đầu phát triển một trang web mới.UrlRewriting.Net Module + IIS7 Equals Page.User == null?
Kế hoạch là sử dụng phần mở rộng .html và viết lại chúng cho các đối tác .aspx của chúng bằng mô-đun UrlRewriting.Net. Tất cả mọi thứ hoạt động hoàn hảo trong VWD 2008, nhưng khi tôi thử chạy nó thông qua IIS7 nó là một câu chuyện khác nhau.
Khi tôi cố gắng truy cập trang qua .html ghi đè, tôi không còn có thể truy cập Page.User; nó tiếp tục trả về null. Nếu tôi nhấn trang bằng cách sử dụng phần mở rộng .aspx, Page.User được điền chính xác. Tôi cũng nên đề cập đến rằng tôi có một bộ điều khiển LoginView trong trang Master của tôi và nó bị các triệu chứng tương tự: Khi truy cập thông qua phần mở rộng .html nó cho thấy AnonyousTemplate; Khi sử dụng phần mở rộng .aspx nó hiển thị đúng LoggedInTemplate. Tôi đoán cả hai có liên quan.
[Lưu ý: Tôi cũng đã thử URL extensionless và chúng biểu lộ cùng một vấn đề]
Cách duy nhất tôi đã nhận được nó để làm việc là để chuyển đổi các hồ bơi ứng dụng cổ điển, sau đó đòi hỏi tôi phải thêm một trình xử lý DD.Net ASP.Net cho phần mở rộng .html [nếu không nó được xử lý bởi StaticFileHandler và xuất hiện dưới dạng lỗi 404]. Tuy nhiên, tôi muốn ứng dụng web của tôi chạy đúng cho mọi người mà không cần phải loay hoay với IIS.
Vì vậy, tôi để lại với một số câu hỏi:
- Có ai có ý tưởng là tại sao Page.User luôn bằng null cho .html => .aspx viết lại trang?
- Tại sao nó hoạt động trong VWD 2008, nhưng không phải IIS7?
- Điều gì đã thay đổi từ IIS6 => IIS7 có thể đã gây ra điều này?
- Bất kỳ suy nghĩ nào khác về cách giải quyết?
[Lưu ý: Tôi vừa thử .aspx => .aspx viết lại và nó không hiển thị sự cố. Không thực sự là những gì tôi muốn, nhưng nghĩ rằng tôi nên đề cập đến nó.]
Có chế độ Tích hợp trong IIS là sự khác biệt chính giữa IIS6 & 7. Bạn có thể muốn xem xét Di chuyển ứng dụng ASP.NET từ IIS6 sang IIS7 (http://msdn.microsoft.com/en-us/library /bb515251.aspx). Như bạn đã khám phá, VWD 2008 chạy mọi thứ thông qua .NET, vì vậy nó chạy hiệu quả trong chế độ tích hợp với runAllManagedModulesForAllRequests được đặt thành true. – krohrbaugh
Cảm ơn Sam. Bạn đang ở trên. Nó giải quyết vấn đề. Tôi sẽ bỏ phiếu cho câu trả lời của bạn nhưng không có đủ danh tiếng: ( – Heinnge