2012-08-27 16 views
32

Trong mã điều khiển của tôi, tôi đang sử dụng: Request.Url.<Something>. ReSharper gợi ý rằng Request.Url có thể là null.Khi nào có thể Request.Url rỗng?

Vì vậy, khi chính xác có thể Request.Url là rỗng? Tôi không nói về thử nghiệm, tôi chỉ quan tâm đến một Ứng dụng đang hoạt động/đã được triển khai.

Xin lưu ý rằng tôi chưa nhận được bất kỳ NullReferenceException s nào từ việc sử dụng Request.Url cho đến thời điểm này.

Trả lời

40

HttpRequestBase là một lớp và ReSharper coi đó là Lớp thực tế, không có gì khác (theo lý thuyết, nó có thể là null). Vì vậy, nó không phân tích việc sử dụng của lớp cụ thể này.

Trong thực tế, tôi nghĩ rằng Request.Url sẽ không bao giờ được null, vì vậy chỉ cần bỏ qua ReSharper trong trường hợp này.

+4

Xin chào, tôi nghĩ đôi khi việc chia sẻ lại có thể là một điều nguy hiểm nhưng không có nó, có lẽ tôi sẽ không đọc. Cố lên các chàng trai. PS ôm và hôn để resharper :) – Adam

13

Thực tế, NullReferenceException có thể xảy ra khi sử dụng Request.Url. Khi bạn tạo lớp điều khiển cơ sở của riêng bạn mà từ đó các lớp khác lấy được, Request sẽ là rỗng. Hoặc khi sử dụng ActionMailer với ASP.NET MVC bạn sẽ phải tạo một lớp điều khiển có nguồn gốc từ MailerBase (cũng gây ra Request bên trong bộ điều khiển này là rỗng).

Cách thay thế: sử dụng HttpContext.Current.Request hoặc kiểm tra xem Request là không.

+3

System.Web.HttpContext.Current.Request :) – lsp

+1

FYI: Request.Url không phải là null nếu bộ điều khiển cơ sở của bạn kế thừa từ Controller, tức là BaseController: Controller –

+1

Chỉ cần biết rằng sử dụng 'System. Web.HttpContext' có thể can thiệp vào việc kiểm tra mà cần phải giả lập 'HttpContext' (vì không có yêu cầu IIS thực sự xảy ra trong quá trình kiểm thử đơn vị). Xem [HttpContextBase vs. HttpContext] (http://www.splinter.com.au/httpcontext-vs-httpcontextbase-vs-httpcontext/) và [Cách nhận đối tượng HttpContextBase từ HttpContext.Current] (http: // thecodersperspective. blogspot.com/2011/07/how-to-get-httpcontextbase-object-from.html) – ErikE

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