2012-10-26 25 views
7

Là một phần của Proof of Concept sử dụng Mô-đun khởi tạo ứng dụng cho IIS 7.5 để tăng tốc độ khởi tạo ứng dụng web, tôi đã tạo một ứng dụng web đơn giản được lưu trữ trên IIS 7.5 (Windows Server 2008 R2) đã bật SSL. Vui lòng xem các cài đặt chung và cục bộ bên dưới.Mô-đun khởi tạo ứng dụng cho vấn đề IIS 7.5

Nếu tôi hiểu chính xác cách Mô-đun khởi tạo ứng dụng hoạt động, tôi hy vọng IIS sẽ gửi yêu cầu tới appinit.aspx (https://localhost/alwaysrunning/appinit.aspx) để khởi tạo ứng dụng web. Điều này tuy nhiên không bao giờ xảy ra.

Bất kỳ ý tưởng nào?

Mục đích của việc khởi tạo thuộc tính là gì?

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao.

EDIT: Khi tôi tắt SSL Mô-đun khởi tạo ứng dụng sẽ gửi yêu cầu tới appinit.aspx như mong đợi. Tôi cần phải làm điều này để làm việc với SSL được kích hoạt mặc dù.

Zen

Cài đặt chung trong file applicationHost.config:

<add name="appinit" autoStart="true" startMode="AlwaysRunning"> 
    <recycling logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"> 
     <periodicRestart requests="0" time="00:05:00"> 
      <schedule> 
       <clear /> 
      </schedule> 
     </periodicRestart> 
    </recycling> 
    <processModel identityType="NetworkService" idleTimeout="00:00:00" /> 
</add> 

<application path="/alwaysrunning" preloadEnabled="true" applicationPool="appinit"> 
    <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\alwaysrunnig" /> 
</application> 

thiết lập địa phương trong file web.config của ứng dụng:

<applicationInitialization remapManagedRequestsTo="splashscreen.htm" skipManagedModules="true" > 
    <add initializationPage="/appinit.aspx" /> 
</applicationInitialization> 

Trả lời

4

(tôi biết, cũ câu hỏi, nhưng nó chưa được trả lời & xuất hiện trong Googl của riêng tôi e tìm kiếm về chủ đề.)

Tham khảo bài viết sau đây từ bộ phận Hỗ trợ của Microsoft: Application Initialization module fails when web site requires SSL (KB2843964). Trích:

Nguyên nhân

Hành vi này là do thiết kế.

Nghị quyết

Để workaround hạn chế này, bạn có thể xem xét cho phép HTTP (bỏ chọn các "Require SSL" thiết lập trong IIS Manager/SSL Settings) và sử dụng một URL quy tắc Rewrite để chuyển hướng các yêu cầu HTTP thành HTTPS với ngoại lệ của yêu cầu đến từ các mô-đun hâm lại:

<rewrite> 
    <rules> 
    <rule name="No redirect on warmup request (request from localhost with warmup user agent)" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern="localhost" /> 
     <add input="{HTTP_USER_AGENT}" pattern="Initialization" /> 
     </conditions> 
     <action type="Rewrite" url="{URL}" /> 
    </rule> 
    <rule name="HTTP to HTTPS redirect for all requests" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="off" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
    </rule> 
    </rules> 
</rewrite> 

Gotta love "hành vi này là do thiết kế. " Thở dài. Đáng buồn thay, các kết quả tìm kiếm hàng đầu mà tôi tìm thấy về tính năng Khởi tạo ứng dụng này không đề cập đến giới hạn này — trừ khi một phiên dịch "yêu cầu HTTP" có nghĩa là yêu cầu không an toàn.

+1

Cảm ơn, điều này đã cứu tôi rất nhiều thất vọng! –

+0

@AaronD Bạn được chào đón. Vui vì nó đã giúp người khác! –

+0

@ ChrisW.Rea Thật là một ý tưởng thông minh. Cảm ơn! – UncleZen

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