2012-01-20 11 views
5

İstemciye göndermeden önce, yanıtlardan gelen boşlukları kaldıran basit bir HttpModule oluşturdum. Bu, IIS7.0'daki bir aspx sayfası için iyi çalışır, ancak statik bir html sayfası oluşturup çağırırsam, HttpModule tekme yapmaz (bildiğim kaynak, aksi takdirde kaldırılması gereken boşluklar içeriyorsa). Görünüşe göre doğru yapmadığım bir şey var ama ne olduğunu bilmiyorum.Statik Html sayfası IIS7.0'da HttpModule aracılığıyla nasıl yapılır?

Web sitem, .NET 4.0 ve ManagedPipelineMode = Integrated numaralı bir Uygulama Havuzunda.

Modülümü bir ManagedModule olarak ekledim ve GAC'dan güçlü ad-isim derlemesi anlamına gelir.

sayesinde

Edit-burada Edit-it Sabit

<system.webServer> 
    ... 
    <modules runAllManagedModulesForAllRequests="true"> 
    <add name="RemoveWhitespaceHttpModule" 
     type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules, 
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d" 
      preCondition="" /> 
    </modules> 
    <defaultDocument> 
    <files> 
     <add value="TestForm.aspx" /> 
    </files> 
    </defaultDocument> 
</system.webServer> 

web.config

gelen system.webServer parçasıdır. Benim modül tepkisini kontrol eder ve daha sonra boşlukların kaldırılması ile devam edip etmeyeceğine karar veya olmasın

if (contentType.Equals("text/html") 
    && httpContext.Response.StatusCode == 200 
    && httpContext.CurrentHandler != null) 
{ ... } 

sorun httpContext.CurrentHandler! = null yukarıdaki üçüncü koşulu ile ne kadar ilgilenen herkes için, bu. Bu modülü static .html sayfaları için çağırırken, currentHandler boştu ve dolayısıyla kod html'yi değiştirmek için içeri girmedi. Bu üçüncü koşulu kaldırdım ve şimdi çalışıyor. Yanıtlarınız için teşekkürler herkese

+0

Statik .html sayfanızı .aspx olarak değiştirin (içerikte değişiklik gerekmez) ve iş – Alex

+0

GZIP işlevini yerine getirmelidir. Http://stackoverflow.com/questions/702124/enable-iis7-gzip – jrummell

+0

@alex - bu benim elde etmek istediğim şey değil. Bunu kolayca yapabilirdim ve bu soruyu hiç yükseltmedim. Bu httpmodule sadece asp.net uygulamaları için değil, aynı zamanda soğuk füzyon uygulamalarını da kullanmak istiyorum. Amacım, .html sayfaları için çalışmak ve oradan almaktır. –

cevap

3

Bu hile yapmak gerekir, web.config olacaktır.

<modules runAllManagedModulesForAllRequests="true"></modules> 

Bu hızlı ve kolay bir çözümdür, ama neden olabilir sorunlar/performans sorunları.

+0

zaten bunu denedi, işe yaramıyor. –

+0

Modülünüzün system.webserver> modules dizininde kayıtlı mı? aksi halde alınılamaz. ve eğer öyleyse, lütfen web.config bölümünüzü – ScottE

+0

evet'e gönderin .. web.config dosyasındaki system.webserver kısmını ana soruya –

1

IIS'nizdeki İşleyici Eşleştirmesine bakmanız gerekiyor.

Bir işleyici nasıl çalışır? IIS'de, işleyici kayıtlı bir sayfanın türünü işlemesi ve kaydetmesi gerektiğidir. IIS'de "Handler Mappings" e bakabilirsiniz [Çalışma komutunu inetmgr'da girin ve enter tuşuna basın. IIS Yöneticisi açılır ve IIS bölümünde Handler Dönüşümler aramaya]

+0

özellikle yapılandırmamı tavsiye eder misiniz? Zaten * .html ile bir işleyici eşleme eklemeyi denedim ama bu herhangi bir amaca hizmet etmedi –

+3

HttpModule hakkında sordu HttpHandler – brushleaf

+0

@ brushleaf: Teşekkürler. Ben düzeltilmeyi bekliyorum. – Kangkan

İlgili konular