2012-06-12 36 views
7

Tôi có một IHttpHandler tùy chỉnh gọi là MvcHttpHandler được thực hiện như mô tả trong this answer.Lỗi khi gọi MvcHttpHandler.ExecuteRequest từ IHttpHandler tùy chỉnh

Nó làm việc tốt trong asp.net MVC2, nhưng sau khi tôi chuyển mã để MVC4 với IISExpress 7.5, tôi bắt đầu nhận được InvalidOperationException trên dòng:

httpHandler.ProcessRequest(HttpContext.Current); 

với thông điệp:

' HttpContext.SetSessionStateBehavior 'chỉ có thể được gọi trước khi sự kiện' HttpApplication.AcquireRequestState 'được thực hiện trước sự kiện ' HttpApplication.AcquireRequestState '.

Máy chủ phát triển ASP.NET không gặp bất kỳ sự cố nào.

Có ai biết điều gì đang xảy ra ở đây không và cách giải quyết?

Trả lời

7

Tôi tin rằng bạn cần sử dụng httpContext.Server.TransferRequest với bản cập nhật MVC.

Xem câu hỏi này: MVC3 Application Inside Webforms Application Routing is throwing a HttpContext.SetSessionStateBehavior Error in IIS7.5

+0

Tôi đã thử điều đó nhưng không hoạt động. Tôi tin rằng đó là bởi vì không có nơi mà tôi nói với hệ thống để sử dụng MvcHandler để xử lý đường dẫn yêu cầu. – ni5ni6

+1

Điều này làm việc cho tôi! – kzfabi

+0

Tôi đã thay thế hai dòng sau: IHttpHandler httpHandler = new MvcHttpHandler(); httpHandler.ProcessRequest (HttpContext.Current); Với: HttpContext.Current.Server.TransferRequest (Request.ApplicationPath); Và nó hoạt động rất tốt! – puddinman13

Các vấn đề liên quan