2012-01-20 12 views
5

मैंने एक साधारण HttpModule बनाया है जो क्लाइंट को भेजने से पहले प्रतिक्रिया से व्हाइटस्पेस को हटा देता है। यह आईआईएस 7.0 पर एएसपीएक्स पेज के लिए ठीक काम करता है, लेकिन अगर मैं एक स्थिर एचटीएमएल पेज बनाता हूं और इसे कॉल करता हूं, तो एचटीपी मॉड्यूल नहीं लाता है (जिस तरह से मुझे पता है क्योंकि स्रोत में व्हाइटस्पेस हैं, जो अन्यथा हटा दिए जाने चाहिए)। जाहिर है ऐसा कुछ है जो मैं सही नहीं कर रहा हूं, लेकिन मुझे नहीं पता कि क्या।आईआईएस 7.0 में एचटीपी मॉड्यूल के माध्यम से स्थिर एचटीएमएल पेज कैसे बनाया जाए?

मेरी वेबसाइट .NET 4.0 और ManagedPipelineMode = Integrated के साथ एक एप्लिकेशन पूल में है।

मैंने अपना मॉड्यूल प्रबंधित मॉड्यूल के रूप में जोड़ा है और जीएसी से एक मजबूत-नाम-कुंजी असेंबली को संदर्भित करता है।

धन्यवाद

संपादित यहाँ web.config

<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> 

संपादित- यह फिक्स्ड से system.webserver हिस्सा है। रुचि किसी के लिए, यह कैसे मेरे मॉड्यूल प्रतिक्रिया की जाँच करता है और उसके बाद फैसला करता खाली स्थान के हटाने के साथ आगे बढ़ने के लिए किया जाए या नहीं

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

समस्या ऊपर httpContext.CurrentHandler! = अशक्त तीसरे शर्त के साथ किया गया है। स्थिर मॉड्यूल पृष्ठों के लिए इस मॉड्यूल को कॉल करते समय, वर्तमान हैंडलर शून्य था और इसलिए कोड कभी भी एचटीएमएल में हेरफेर करने के लिए अंदर नहीं गया। मैंने इस तीसरी हालत को हटा दिया है और यह अब काम करता है। आपके उत्तरों के लिए धन्यवाद

+0

.aspx को (जरूरत सामग्री में कोई परिवर्तन नहीं) अपने स्थिर .html पेज का नाम बदलें और बात काम करना चाहिए – Alex

+0

GZIP पहले से ही करता है यह http://stackoverflow.com/questions/702124/enable-iis7-gzip – jrummell

+0

@alex - वह नहीं है जो मैं प्राप्त करना चाहता हूं। मैं आसानी से ऐसा कर सकता था और इस सवाल को बिल्कुल नहीं उठाया। मैं इस httpmodule का उपयोग न केवल asp.net अनुप्रयोगों के लिए करने में सक्षम होना चाहता हूं, बल्कि ठंड संलयन वाले भी हैं। मेरा लक्ष्य यह है कि इसे .html पृष्ठों के लिए काम करना और इसे वहां से ले जाना है। –

उत्तर

3

इस चाल करना चाहिए, web.config में:।

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

यह एक त्वरित और आसान समाधान है, लेकिन पैदा कर सकता है मुद्दों/प्रदर्शन मुद्दों।

+0

पहले ही यह कोशिश कर रहा है, काम नहीं करता है। –

+0

क्या आपके पास आपका मॉड्यूल system.webserver> मॉड्यूल में पंजीकृत है? अन्यथा यह उठाया नहीं जाएगा। और यदि ऐसा है, तो कृपया अपना web.config भाग – ScottE

+0

हां पोस्ट करें .. मुख्य प्रश्न –

1

आपको अपने आईआईएस में हैंडलर मैपिंग को देखने की आवश्यकता है।

आईआईएस पर एक हैंडलर कैसे काम करता है, हैंडलर पंजीकृत है और एक कण प्रकार के पृष्ठ को संभालने वाला माना जाता है। आप IIS में "हैंडलर मैपिंग्स" देख सकते हैं [रन कमांड प्रकार inetmgr में और एंटर दबाएं। आईआईएस प्रबंधक पॉप अप होगा और आईआईएस खंड में हैंडलर मैपिंग के लिए देखो]

+0

आप कॉन्फ़िगर करने के लिए विशेष रूप से सलाह देंगे। मैंने * .html के साथ एक हैंडलर मैपिंग जोड़ने का प्रयास कर लिया है, लेकिन यह किसी भी उद्देश्य –

+3

की सेवा नहीं करता है, उसने HttpModule के बारे में पूछा, न कि HttpHandler – brushleaf

+0

@brushleaf: धन्यवाद। मुझे सही साबित होना है। – Kangkan

संबंधित मुद्दे