2010-02-28 8 views
5

Tôi đang chạy Sitecore 6.1 trên Windows 2008, IIS7 và tôi đang cố sử dụng Mô-đun Rewrite URL để thực hiện chuyển hướng. Khi tôi bật quy tắc và nhấn vào URL kích hoạt nó, tôi nhận được YSOD. Quy tắc tương tự hoạt động hoàn hảo trên trang web không phải là trang web trên cùng một máy. Theo Trace Request không thành công, module viết lại thực hiện điều tốt, nhưng sau đó Sitecore ném một ngoại lệ, ngay cả khi chuyển hướng trỏ đến một máy chủ khác. Đây có lẽ là kết quả của một cái gì đó tôi đã cấu hình sai, nhưng tôi chỉ không thể hiểu tại sao nó không hoạt động. Các chi tiết từ YSOD ở bên dưới.Tại sao Sitecore ném ngoại lệ NullReferenceException khi tôi chuyển hướng đến một trong các trang của nó?

[NullReferenceException: Object reference not set to an instance of an object.] 
    Sitecore.Nexus.Web.HttpModule.(Object sender, EventArgs e) +273 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 
+1

đã có giải pháp xác nhận cho điều này chưa? thiếu đăng nhập vào mô-đun đang khiến tôi đau buồn. – Dann

Trả lời

3

Sitecore có công cụ riêng để chuyển hướng URL, vì vậy một số dây có thể bị vượt qua tại đây. Có thể bạn cần phải di chuyển HttpModule của bạn để nó thực hiện trước đó trong chuỗi.

+0

Dấu vết lỗi chắc chắn cho thấy ghi đè xảy ra trước khi đường ống Sitecore bắt đầu. Liệu nó vẫn có ý nghĩa rằng mọi thứ đang xảy ra theo thứ tự sai? – Abs

+0

Tôi cho là không. Nhưng điều thú vị là mô-đun Nexus này là mô-đun đăng ký Sitecore đầu tiên (tôi vừa kiểm tra web.config của mình). Bạn đã thử xóa nó chưa? Tôi không chắc nó làm gì. – Bryan

+0

OK, Nexus là một phần không thể thiếu của Sitecore ... không thể tắt nó. Câu hỏi: Điều gì xảy ra khi bạn duyệt qua URL mục tiêu trong trình duyệt? Lỗi tương tự? URL đầy đủ là gì? Nó có một phần mở rộng mà Sitecore sẽ không xử lý? – Bryan

1

Bạn có thể nhận được lỗi tương tự khi làm

Response.Redirect("~/SomeUrl.aspx") 

trong mã C#, cách để sửa lỗi này là sử dụng quá tải:

Response.Redirect("~/SomeUrl.aspx", true) 

mà sẽ kết thúc phản ứng ngay lập tức.

Mô-đun ghi đè rõ ràng là không kết thúc yêu cầu ngay lập tức cho phép Sitecore gặp sự cố này. Bạn có thể giải quyết vấn đề này bằng cách tạo một mô-đun để xử lý các chuyển hướng hoặc cố gắng mở rộng Mô-đun Rewrite URL để kết thúc phản hồi ngay lập tức.

1
+0

Vấn đề với 'sửa chữa' này là nếu bạn đang sử dụng tùy chọn URL mở rộng mới (giảm phần mở rộng .ASPX), bạn không thể chạy dự án ở chế độ cổ điển. Nó sẽ phục vụ lên 404 trang. – ianpoley

+0

@ianpoley - Điều thú vị là, sau khi chuyển sang cổ điển, sau đó quay lại Tích hợp tính năng này hiện đã được khắc phục – Dann