2009-09-29 26 views
12

Chúng tôi đang nhìn thấy một mẫu kỳ lạ trong Phòng thí nghiệm QA của chúng tôi. Chúng tôi có hai ứng dụng ASP.NET, mỗi ứng dụng được triển khai trên cùng một hộp Windows 2008 SP2 +. Chúng tôi có App Pool của chúng tôi đang chạy trong một tài khoản tên miền, và thiết lập để không bao giờ tái chu kỳ. 1 App Pool giống nhau được cả hai ứng dụng sử dụng.Ứng dụng ASP.NET Chuyển đến 500.21 ... cho đến khi IIS Reset + Xóa Tempoary ASP.NET Cache

Sau vài giờ chạy tốt, người dùng mới lướt đến một trang trong ứng dụng của chúng tôi sẽ nhận được Trang lỗi IIS7, với lỗi 500.21.

Nếu chúng ta không làm gì cả nhưng:

1) IISRESET 2) Thay đổi thư mục c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files và "thứ" 2 ứng dụng .

Và sau đó lướt qua các ứng dụng web của chúng tôi, tất cả đều ổn.

Sau đó vài giờ sau, lỗi 500.21 trả lại.

Điều gì khiến tôi kỳ quặc là mối quan hệ dường như giữa việc xóa các thư mục "Tệp ASP.NET tạm thời" và sự cố sẽ biến mất. Tôi đã thực hành xóa các thư mục "Temporary ASP.NET Files" khi cài đặt một phiên bản mới của (các) ứng dụng của chúng tôi, nhưng không phải khác.

Mối quan hệ này có quen thuộc với bất kỳ ai không? Có một số tính năng IIS7 mới-ish tại nơi làm việc ở đây?

Văn bản của Lỗi:

Server Error trong ứng dụng "DEFAULT WEB SITE/PAIS"
Internet Information Services 7.0
Lỗi Tóm tắt
Lỗi HTTP 500,21 - Internal Server Error
Handler "PageHandlerFactory-Integrated" có một mô-đun xấu "ManagedPipelineHandler" trong danh sách mô-đun
Thông tin lỗi chi tiết
Mô-đun Web IIS Web lõi
Thông báo ExecuteRequ estHandler
Handler PageHandlerFactory-Tích hợp
Error Code 0x8007000d
yêu cầu URL http://localhost:80/PAIS/Admin.aspx

Physical Đường dẫn C: \ 0_Georgia \ GA_IS_100142 \ PortfolioArchiveImageServer \ Admin.aspx
Logon Phương pháp Anonymous
Logon người sử dụng Ẩn
nguyên nhân Nhiều khả năng :
• ASP.NET chưa được cài đặt hoặc chưa được cài đặt đầy đủ.
• Đã xảy ra lỗi đánh máy cấu hình.
• Đánh giá trước điều kiện không thuận lợi tồn tại.
Những điều bạn có thể thử:
• Nếu ManagedPipelineHandler bị thiếu, hãy đảm bảo rằng:
o ManagedEngine đang ở.
o ManagedPipelineHandler đang ở, với các điều kiện trước chính xác.
• Cài đặt ASP.NET.
• Đảm bảo tất cả system.webServer/[email protected] đều nằm trong system.webServer/[email protected]
• Xem lại các điều kiện trước trong các phần và.
Liên kết và thông tin khác lõi IIS không nhận ra mô-đun.
Xem thêm thông tin »

Cảm ơn trước,

Howard Hoffman

+1

Bạn có thể gửi toàn bộ nội dung của trang lỗi? – David

+0

Ngoài ra, tôi sẽ chia từng ứng dụng thành AppPool riêng của mình để xem bạn có thể thu hẹp sự cố không. – David

+0

Xin lưu ý rằng chúng tôi đã lấy lời khuyên của David và chia thành 2 hồ bơi. Tôi cũng có thể thêm rằng tái đạp xe App Pool, * thay vì * chạy IISReset + xóa thư mục GAGI tạm thời ASP.NET Files, cũng có vẻ như để khắc phục vấn đề. Câu hỏi vẫn còn ... tại sao? –

Trả lời

9

Chúng tôi đã tìm thấy sự cố thực sự, với sự trợ giúp của MS ASP.NET. Nó khá tinh tế. Tôi nghĩ rằng MS đã nói rằng họ sẽ khắc phục vấn đề trong một tiếp theo để phát hành ứng dụng Vải (mà bây giờ là RTM). Ngón tay vượt qua.

Sự cố luôn xảy ra trong trường hợp này:

1) Ứng dụng web ASP.NET chưa chạy. Nó bao gồm WCF Net.Pipe và/hoặc Net.Tcp bindings. Tôi nghĩ rằng tương tự sẽ xảy ra cho NetMsmq nhưng không thử nó.

2) Yêu cầu Dịch vụ kích hoạt Windows NetPipe hoặc NetTcp WCF Windows Activation Service là yêu cầu ban đầu bắt đầu Miền ứng dụng.

3) Ứng dụng sử dụng một 'Tích hợp' IIS App bơi (IIS7 hoặc IIS 7,5)

4) Ứng dụng này sử dụng HttpServerUtility.Execute trong đó yêu cầu 1.

Nó chỉ ra rằng ứng dụng của chúng tôi đã bắn một sự kiện giám sát sức khỏe ASP.NET trong quá trình hoạt động WCF đầu tiên - hoạt động rất khiến Windows Activation Service (WAS) khởi động ứng dụng của chúng tôi. Cấu hình theo dõi sức khỏe của chúng tôi bao gồm TemplatedMailWebEventProvider.

Ứng dụng của chúng tôi đang sử dụng Bể bơi ứng dụng IIS 'Tích hợp'.

TemplatedMailWebEventProvider được triển khai để tạo nội dung thư email dưới dạng HTML. Nó sử dụng quá tải System.Web.HttpServerUtility.Execute(string, TextWriter, Boolean).

Đối với trường hợp sử dụng này, tình trạng quá tải làm sai điều gì đó - nó khởi tạo một đường dẫn HTTP dựa trên ứng dụng IIS cổ điển 'Cổ điển'. Bởi vì đó là đường dẫn sai cho một 'Tích hợp' IIS App Pool đường ống bị hỏng với yêu cầu HTTP tiếp theo - mà thực sự là yêu cầu HTTP đầu tiên gửi đến.

Vì vậy, bạn nhận được lỗi 500.21 cho tất cả các yêu cầu HTTP trong tương lai cho đến khi ứng dụng được tái luân chuyển. Bạn không cần phải thực hiện các bước tương đối quyết liệt của IISRESET, xóa bộ nhớ cache tạm thời ASP.NET để xóa lỗi - chỉ cần khởi động lại ứng dụng thông qua lưu web.config và tránh đường dẫn khởi động cụ thể gây ra lỗi.

MS đã đề xuất cách giải quyết cho chúng tôi - sử dụng SimpleMailWebEventProvider thay vì TemplatedMailWebEventProvider. Điều đó không làm việc, vì nó cần HttpServerUtility.Execute ra khỏi đường dẫn mã cho yêu cầu đầu tiên.

Tôi đã đề xuất rằng MS giới thiệu một trang web mới.config <system.web> cài đặt boolean - UseIntegrated - hãy để ứng dụng chỉ định kiểu của App Pool để khởi tạo. Rõ ràng IIS không chuyển tiếp loại ứng dụng Pool tới ASP.NET, vì vậy sugggestion của tôi là một work-around đến rằng.

Nhà cung cấp TemplatedMailWebEvent thân thiện hơn nhiều so với SimpleMailWebEventProvider và chúng tôi hy vọng MS sẽ giải quyết vấn đề.

Cảm ơn tất cả các bạn đã đọc,

Howard Hoffman

+0

Tôi phải +1 câu trả lời của Umair Ahmed vì nó đã khắc phục được sự cố của tôi ... – enguerran

+0

Tôi lưu ý rằng AFAIK Microsoft chưa bao giờ giải quyết nguyên nhân gốc rễ. Họ đã chuyển từ ASP.NET Health Monitoring để ủng hộ việc đầu tư vào System Center và các công nghệ liên quan. Vấn đề vẫn còn đó trong Windows Server 2012 - chưa kiểm tra Windows Server 2016 - và công việc xung quanh vẫn hoạt động. –

-1

Vấn đề nhiều khả năng là trong mã ứng dụng. Thư mục Tệp ASP.NET tạm thời chứa các bản sao được biên dịch trước của ứng dụng của bạn và sẽ được làm mới mỗi lần các tệp ứng dụng được truy cập. Bạn có thể biên dịch trước các tệp này bằng aspnet_compiler.exe trong thư mục \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \. Sử dụng tùy chọn -errorstack cho phép có thêm thông tin được tạo về lỗi bạn đang nhận. Các ứng dụng chạy dài không tái chế sẽ gặp sự cố nếu chúng sử dụng nhiều bộ nhớ hoặc giữ lại một lượng lớn dữ liệu trong trạng thái phiên inproc. nếu các phiên của bạn chứa một lượng lớn thông tin, hãy xem xét sử dụng trình quản lý phiên dựa trên sqlserver.

+0

Chúng tôi đã thực sự xác định vấn đề là 'System.Web.HttpServerUtility.Execute (string, TextWriter, Boolean)' overload - thực sự. Vì không có đường dẫn HTTP tại thời điểm quá tải được gọi, nó sẽ làm hỏng thời gian chạy. Đó là một vấn đề của Microsoft. Họ xác nhận điều đó. Tôi muốn họ cũng sẽ sửa chữa nó ... nhưng 'SimpleMailWebEventProvider' là một công việc xung quanh. –

19

Phải đối mặt với cùng một vấn đề và sửa chữa là dễ dàng.

1) Mở cửa sổ lệnh trực quan 2010.

2) Chạy lệnh aspnet_regiis.exe -i

+0

Bạn có thể thêm giải thích về "aspnet_regiis.exe -i" không? – enguerran

+1

Nó cài đặt ASP.NET trên IIS. Tôi đã có vấn đề này bởi vì .Net 4 đã được cài đặt trên máy tính của tôi trước khi IIS. Tôi đã phải chạy lệnh này để có được ASP.NET làm việc trên máy tính của tôi. –

+0

Cảm ơn bạn. Nó giải quyết vấn đề của tôi. –

0

1. IIS 7 ném một ngoại lệ như trong dưới
enter image description here

2. mở Visual Studio 2010 Command Prompt trong chế độ Administrator và thực thi aspnet_regiis.exe -i
enter image description here

3. Vấn đề cố định, như hình dưới đây ASP.Net Application và ASP.Net MCV ứng dụng đang chạy trơn tru.
enter image description here

+0

Làm việc tốt ghi rõ giải pháp của bạn. Có nhiều cách để giải quyết lỗi '500.19'. Giải pháp của bạn không phải là cách chữa trị cho vấn đề cụ thể của chúng tôi. Vấn đề cụ thể của chúng tôi chỉ được giải quyết bằng cách làm theo các bước của câu trả lời được chấp nhận. –

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