2009-07-08 33 views
13

Tại sao tất cả các tệp .axd của tôi tạo ra lỗi 404 khi trên máy chủ sản xuất của chúng tôi?.axd tệp tạo lỗi 404

+0

Các tệp .aspx có hoạt động không? Phiên bản ASP.NET nào được cài đặt? – jrummell

Trả lời

6

Bạn cần phải tạo một kiểu MIME cho rằng phần mở rộng trong IIS:

Để định nghĩa một kiểu MIME cho một phần mở rộng cụ thể, hãy làm theo các bước sau:

  1. Mở IIS Microsoft Management Console (MMC) , bấm chuột phải vào tên máy tính cục bộ, rồi bấm Thuộc tính.
  2. Nhấp vào Tiêu đề HTTP.
  3. Nhấp vào MIME Types.
  4. Nhấp vào Mới.
  5. Trong hộp Mở rộng, nhập phần mở rộng tên tệp mà bạn muốn (ví dụ: .axed)
  6. Trong hộp Kiểu MIME, nhập ứng dụng/octet-stream.
  7. Áp dụng cài đặt mới. Lưu ý rằng bạn phải khởi động lại World Wide Web Publishing Service hoặc chờ quá trình nhân viên tái chế để các thay đổi có hiệu lực. Trong ví dụ này, IIS hiện cung cấp các tệp với phần mở rộng .axed.
+0

Không phải vậy. Tôi có cảm giác rằng máy chủ đang loại bỏ các tham số chuỗi truy vấn từ các tệp .axd và các tệp .asmx làm các dịch vụ web của tôi không hoạt động. Có ai nhận thức được cái gì đó sẽ ngăn chặn điều này (không có nó không phải là động từ mất tích từ phần mở rộng vì điều này tạo ra một lỗi khác nhau) – januszstabik

+0

Phiên bản IIS bạn đang chạy? – Alex

+0

Tôi nghĩ bạn có thể có vấn đề về quyền? Bạn có thấy gì khác trên máy chủ đó không? .aspx? Có gì không? – Alex

2

Chúng tôi đã gặp lỗi 500 (không phải 404, nhưng ai biết) trên máy chủ sản xuất của chúng tôi cách đây một thời gian. Không có tài nguyên tập lệnh nào có thể tải.

Sự cố nằm trong sự khác biệt về thời gian giữa các máy chủ sản xuất và phát triển của chúng tôi. Đó là -7 giờ. NET đã ném một ngoại lệ vì nó đã cố gắng sử dụng một "thời gian trong tương lai" của một hội đồng với các tài nguyên tập lệnh nhúng.

Giảm {website}/bin/ thư mục (thực sự là cụm từ trong đó) ngày tạo theo ngày đã giải quyết được sự cố.

+0

Cảm ơn bạn đã đề xuất. Tôi muốn thử nghiệm điều này. Bạn đã sử dụng công cụ nào để thay đổi dấu thời gian? – itslittlejohn

+0

Đây thực sự là vấn đề đối với chúng tôi và đã nhận được 404. Tôi đã sử dụng thay đổi ngày tập tin của Nirsoft. – itslittlejohn

0

Bạn có thể thực hiện yêu cầu "không hợp lệ" không thành công và sau đó kiểm tra nhật ký sự kiện của hệ thống và ứng dụng của máy chủ không?

Có một số vấn đề xung quanh trục có thể gây ra 404 hoặc 500 (chẳng hạn như vấn đề "thời gian trong tương lai" được đề cập bởi Alex), nhưng chúng để lại dấu chân trong nhật ký sự kiện.

Có giao diện và đăng bất kỳ mục nhập nhật ký nào đề cập đến các trục.

3

Bạn có thể kiểm tra như sau:

  1. Kiểm tra trong việc quản lý IIS console rằng phần mở rộng .axd (phần mở rộng xử lý HTTP mặc định) được cho phép.
  2. Đồng thời kiểm tra xem hộp kiểm “Xác minh nếu tệp tồn tại” có bị bỏ chọn hay không. Màn hình này xuất hiện sau khi bạn nhấp vào nút "Chỉnh sửa" sau khi chọn tiện ích mở rộng trục.
  3. Kiểm tra xem trình xử lý HTTP có được đăng ký chính xác trong web.config không. Nó cũng phải nằm trong phần cấu hình đúng tùy thuộc vào phiên bản IIS. Đối với chế độ IIS6 và IIS7 Classic, nó phải ở trong <system.web><httpHandlers>. Đối với chế độ tích hợp IIS7, nó phải được đăng ký trong <system.webServer><handlers>.
15

nếu bạn đang ở trên IIS7 chắc chắn rằng bạn thêm handler cho sự <system.webServer><handlers> phần:

<add name="MyName" path="MyName.axd" verb="*" type="NameSpace.Class, Assembly" /> 
4

Xác nhận rằng trong Request Filtering bạn hoặc * có .axd như một phần mở rộng cho phép, hoặc * có Allow unlisted file name extensions được chọn trong Chỉnh sửa cài đặt yêu cầu lọc

Hiệu ứng tương tự có thể đạt được với phần web.config sau đây:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <fileExtensions> 
       <add fileExtension=".axd" allowed="true" /> 
      </fileExtensions> 
     </requestFiltering> 
    </security> 
</system.webServer> 
+0

Tôi muốn làm điều ngược lại, do đó, điều này là hoàn hảo (rõ ràng, tôi chỉ sử dụng 'false' thay cho' true'). – Fenton

7

Trong trường hợp của tôi, tôi đã chuyển dự án từ .NET 2.0 bằng cách sử dụng chuyển đổi tự động. Bộ chuyển đổi đã thêm phần <system.webServer> và tất cả các trình xử lý và mô-đun có trong số <system.web>. Tuy nhiên, đối với mỗi trình xử lý, nó đã thêm thuộc tính sau: preCondition = "integratedMode, runtimeVersionv2.0" Khi tôi đã xóa thuộc tính, các điểm dừng 404 và trình xử lý bắt đầu hoạt động.

+0

Cảm ơn bạn đã tiết kiệm cho tôi một khoảng thời gian không xác định, nhưng có khả năng đáng kể! – bentayloruk

0

Tôi đã thêm một thuộc tính runAllManagedModulesForAllRequests = "true" vào module .. nút của phần system.webServer, các 404s dừng lại và xử lý bắt đầu làm việc.

0

Nếu điều này sẽ giúp bất cứ ai, tôi đã có cùng một vấn đề, một vài người trong chúng ta đã dành 2 ngày. Trên 3 máy chủ tất cả mọi thứ đã làm việc ok và allso về phát triển nhưng trên máy chủ này 404 không ngừng. Giải pháp, tôi đã thay đổi poold từ tích hợp sang cổ điển và đã làm việc

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