2009-07-03 28 views
28

Có ai có phương pháp chống đạn (trong C# lý tưởng!) Để xác định xem ASP.Net có được đăng ký đúng cách trên máy tính của bạn không?Xác định xem ASP.Net có được đăng ký đúng cách

Tôi đang viết chương trình cài đặt cho ứng dụng ASP.Net và tôi cần biết mình có nên chạy aspnet_regiis hay không.

Hiện tại, chúng tôi luôn chạy aspnet_regiis - Tôi đảm bảo rằng ASP.Net được đăng ký đúng cách nhưng điều này không mong muốn vì nó nhắc khởi động lại tất cả các nhóm ứng dụng.

Có một số trang hữu ích trên web (ví dụ: http://www.codeproject.com/KB/cs/iisdetection.aspx) nhưng theo nhận xét trong bài đăng đó, thường là trường hợp đăng ký báo cáo rằng ASP.Net được đăng ký nhưng aspnet_regiis vẫn cần phải chạy để định cấu hình IIS. Người dùng 'JonB' đăng một cái gì đó trông giống như nó sẽ làm việc cho IIS6 (và IIS7 với khả năng tương thích IIS6 kích hoạt) nhưng tôi vẫn sẽ cần phải viết mã phát hiện riêng biệt cho IIS 7 với chế độ tương thích IIS6 bị vô hiệu hóa.

Vậy có ai đã bẻ hạt này chưa? Nếu vậy xin vui lòng cho chúng tôi biết vì nó sẽ là một tiết kiệm thời gian. Nếu không tôi sẽ cố gắng và cổng C++ giải pháp vào C# cho IIS6 và IIS7 tôi sẽ xem xét kiểm tra phần <isapiCgiRestriction> của applicationHosts.config cho

<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" /> 

câu hỏi cuối ...

Có ai biết nếu mọi thứ đều giống nhau/khác nhau trong Windows 7?

Trả lời

10

Trước tiên, tôi sẽ thử chạy aspnet_regiis -lv. Điều này sẽ cung cấp cho bạn một kết quả như:

1.1.4322.0  Valid   C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll 
2.0.50727.0  Valid   c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 

mà bạn có thể dễ dàng phân tích cú pháp để xác minh phiên bản đích được cài đặt và hợp lệ. Nếu không, bạn sẽ phải đi theo tuyến đường aspnet_regiis -i.

Ngoài ra, với điều kiện bạn có thể thực hiện việc kiểm tra này bằng C#, bạn có thể thêm trang thử nghiệm vào ứng dụng ASP.NET của mình. Sau khi bạn thường xem xét cài đặt thành công, hãy thực hiện HttpWebRequest trên trang kiểm tra đó. Bản thân trang có thể đơn giản như trang trống và phức tạp như chạy tự kiểm tra cài đặt (quyền tệp/thư mục, cấu hình DB, v.v.) và chỉ trả về HTTP 200 nếu mọi thứ đều ổn. Bất kỳ thời gian chờ hoặc lỗi nào cho biết cài đặt không đúng. Sau đó, tùy chọn, xóa trang thử nghiệm.

0

đoạn này làm việc cho IIS7 +

using Microsoft.Web.Administration; 

private static string[] ARR_STR_SUPPORTED_APP_POOLS = 
         { "ASP.NET v4.0", "ASP.NET v4.5", ".NET v4.5", ".NET v4.0" }; 

public static ApplicationPool GetFirstSupportedAppPoolInstalled(this ServerManager mgr, IEnumerable<string> supportedAppPools) 
{ 
    ApplicationPool result = null; 
    foreach (string appPoolName in supportedAppPools) 
    { 
     result = mgr.ApplicationPools[appPoolName]; 
     if (result != null) 
      break; 
    } 
    return result; 
} 

... 
using (var mgr = new ServerManager()) 
{ 
    if (!mgr.IISAccessCheck()) 
     throw new ApplicationException("Error trying to access IIS 7!"); 

    ApplicationPool appPool = mgr.GetFirstSupportedAppPoolInstalled(ARR_STR_SUPPORTED_APP_POOLS); 
    if (appPool == null) 
     throw new ApplicationException("No appropriate .NET application pool found!"); 

    // you can do something with the app pool, if needed 
} 
... 

Bạn có thể điều chỉnh nó như bạn muốn.

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