2010-06-27 56 views
9

Tôi đã lấy mã của một trang web từ người khác để kết thúc và đã gặp sự cố mỗi khi tôi tải trang, tôi nhận được ngoại lệ 'Không tồn tại tệp' trong trình xử lý Application_Error trong tệp Global.asax của tôi.Tệp không tồn tại ngoại lệ trong VS2010

Tôi đã tò mò nó là gì, vì vậy đã thử tạo các giải pháp hoàn toàn mới với cả Trang web và Ứng dụng web, cả khi có và không có Trang chính và một trang .aspx - cả hai đều có cùng một vấn đề.

Điều này đang sử dụng VS2010 và .NET 3.5, trên Windows 7 64 bit.

Bạn có ý tưởng nào không? Theo dõi ngăn xếp cho tôi biết hoàn toàn không có gì và thực tế tôi nhận được nó với các dự án mới là lẻ.

Exception Stack Trace:

at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response) 
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context) 
at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) 
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
+1

phỏng đoán đầu tiên của tôi ... http: //webdesign.about.com/od/favicon/f/blfaqfavicon4.htm – agradl

Trả lời

1

Tôi chưa bao giờ đến đáy của việc xây dựng lại một cách đáng buồn và quá hạn của máy tính đã sắp xếp nó.

3

tên tập tin trong ngoại lệ là gì? Nếu tên tệp hoặc đường dẫn bị làm xáo trộn, thì bạn có thể có một tham nhũng trong các tệp tạm thời ASP.NET. Hãy thử "giải pháp sạch" và "giải pháp xây dựng lại" và chạy lại.

Nếu không, bạn sẽ cần đăng thêm thông tin, bao gồm cả thông báo ngoại lệ đầy đủ, không chỉ là ngăn xếp cuộc gọi. Điều này có xảy ra trên trang mặc định của trang web không? Dự án web có được chọn là dự án khởi động không? Điều này có xảy ra trong máy chủ web Visual Studio hay IIS không?

+0

Vấn đề là không có tên tệp hoặc thông tin bổ sung nào trong ngoại lệ. Tôi đã đăng tất cả mọi thứ tôi đã xin lỗi. Nó cho tôi biết không có gì hữu ích. Nếu tôi tạm dừng tất cả các ngoại lệ, tôi sẽ không nhận được gì - nó vẫn chỉ truy cập trình xử lý ngoại lệ trong tệp Global.asax và không có nơi nào khác. Tôi cũng đã đóng Visual Studio và tạo hai giải pháp thử nghiệm hoàn toàn mới, như đã đề cập, vì vậy việc làm sạch/xây dựng lại sẽ không giúp ích gì. – Michael

+0

OK, đủ điều kiện là khá lạ. Ngăn xếp cuộc gọi nói với tôi rằng bạn đang ở trong đường dẫn ASP.NET, và nó đang thiết lập để tải và xử lý một trang, nhưng (có thể) không có một trang để tải. Có thể trang web không biết trang mặc định là gì, vì vậy có lẽ bạn có thể thử chọn một trang và đặt trang đó làm trang khởi động mặc định. Hoặc với trang mở trong Visual Studio, chỉ cần nhấp chuột phải vào trang trong cửa sổ chỉnh sửa và chọn Xem trong Trình duyệt; điều này sẽ cho bạn biết nếu có vấn đề với trang. –

+0

Đã cố gắng cảm ơn. Điều này xảy ra với bất kỳ trang nào, chỉ khi sử dụng Visual Studio. Khi tôi triển khai vào máy chủ web của mình (Windows Server 2003 R2) thì không sao và không có lỗi. Trong studio, có một nhóm trang mặc định, vì vậy sẽ không có. Rất tiếc - âm thanh như một sự cố với VS2010 - không làm điều này với VS2008. – Michael

2

Tôi phát hiện lỗi của mình trong Application_Error trong gloal.asax Tôi cũng nhận được Request.Url.ToString(), điều này sẽ cung cấp cho bạn tài nguyên thủ phạm. Ví dụ trong ứng dụng của tôi, tôi thấy rằng Application_Error thậm chí còn phàn nàn về favicon.ico, và nếu bạn có một số tệp bị thiếu mà bạn có thể tham chiếu từ css của bạn, nó sẽ bị bắt gặp bởi sự kiện Application_Error. Ví dụ:

thực sự, hãy xem blog này, nói về cùng một vấn đề và sử dụng Request.Url để khám phá tài nguyên được đề cập là gì. Điều này sẽ giúp http://dotbert.loedeman.nl/httpexception-file-does-not-exist

9

Bí quyết trong việc tìm ra tệp nào không tồn tại là sử dụng mã sau trong phương thức Application_Error.

protected void Application_Error(Object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError().GetBaseException(); 
    string file = HttpContext.Current.Request.Url.ToString(); 
    string page = HttpContext.Current.Request.UrlReferrer.ToString(); 
} 

Điều này sẽ truy xuất tên của tệp bị thiếu và trang gốc mà từ đó yêu cầu đến.

+1

Tôi đã nhận được lỗi này mỗi ngày một lần vào lần chạy đầu tiên của ứng dụng ở chế độ gỡ lỗi và sử dụng câu trả lời này tôi phát hiện ra đó là yêu cầu cho 'favicon.ico', mặc dù tôi đã thêm favicon vào' IgnoreRoutes'. Bất kỳ ý tưởng về làm thế nào để thoát khỏi nó hoàn toàn, khác hơn là thêm một favicon.ico vào giải pháp? – Webbie4

+0

@ Webbie4: Không, xin lỗi. Tôi không có ý kiến. –

1

Tôi đã giải quyết điều này cho tình huống của mình ... hóa ra rằng thuộc tính dự án đã hoàn nguyên về "Sử dụng trang hiện tại" (trong VS 2010 - Thuộc tính dự án | Tùy chọn bắt đầu | Bắt đầu hành động).

Điều kỳ lạ là tôi đã đặt tùy chọn bắt đầu thành "Trang cụ thể" - vì vậy một nơi nào đó dọc theo dòng VS 2010 bị mất dấu vết và được đặt lại là "Sử dụng trang hiện tại".

Rob.

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