2011-03-03 15 views
9

मुझे एएसपी.NET वेब कॉन्फ़िगरेशन फ़ाइल में कोई समस्या है। मैं एक विशिष्ट पीडीएफ फ़ाइल तक पहुंचने के लिए कुछ उपयोगकर्ताओं या भूमिकाओं से इंकार करना चाहता हूं। मैं एएसपी.नेट सदस्यता और भूमिका प्रबंधन प्रणाली का उपयोग कर रहा हूं। तो मैं एक Web.config फ़ाइल के लिए कोड का यह लाइनों कहा:ASP.NET वेब कॉन्फ़िगरेशन वाली फ़ाइल तक पहुंच से इनकार कैसे करें, न केवल स्थानीय रूप से?

<location path="myfile.pdf"> 
    <system.web> 
     <authorization> 
      <allow roles="admin"/> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 

और यह निर्देशिका डायन फ़ाइल उस में शामिल किया गया है करने के लिए डाल दिया। अब जब मैं स्थानीय सिस्टम में प्रोजेक्ट चलाता हूं तो मैं "व्यवस्थापक" भूमिका के साथ लॉगिन पीडीएफ फाइल विइल तक नहीं पहुंच सकता। लेकिन जब मैं वेब सर्वर पर प्रोजेक्ट प्रकाशित करता हूं तो मैं फ़ोल्डर को ब्राउज़ नहीं कर सकता लेकिन जब मैं पीडीएफ फाइल को पूरा पथ ब्राउज़ करता हूं तो मैं पीडीएफ फ़ाइल देख सकता हूं। तो:

मैं नहीं पहुंच सकते: http://www.example.com/folder

लेकिन मैं देख सकते हैं: पहले ASP.Net उस पर अपने हाथ हो जाता है http://www.example.com/folder/myfile.pdf

उत्तर

11

आईआईएस शायद पीडीएफ फाइल में सेवारत है। मान लें कि आप नेट 4.0 का उपयोग कर रहे हैं, ASP.Net के माध्यम से प्रवाह करने के लिए सभी अनुरोधों को मजबूर करने के लिए अपने Web.config फ़ाइल से जोड़ें:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
<system.webServer> 
2

आप के लिए ASP.NET के लिए आईआईएस आगे पीडीएफ अनुरोध करने के लिए की जरूरत है अपने सामान लेने के लिए।

उदाहरण अनुच्छेद: आईआईएस

साथ

Hooking PDF फ़ाइलों में वेब आवेदन

यह आसान परीक्षण था: लेख से

का हवाला देते हुए प्रासंगिक हिस्सा कस्टम HTTP विजुअल स्टूडियो के अंतर्निर्मित वेब सर्वर, कैसिनी में हैंडलर, क्योंकि सभी दस्तावेज़ प्रकार स्वचालित रूप से वेब अनुप्रयोग में डिफ़ॉल्ट रूप से संसाधित होते हैं। हालांकि, आईआईएस को कुछ ट्वीक्स की आवश्यकता है। आईआईएस को पीडीएफ फाइलों के लिए एएसपी .NET वेब एप्लिकेशन के लिए अनुरोधों को भेजने की अनदेखी करेगा और इसके बजाय बस अनुरोध की सेवा करेगा। हमें अनुरोध को अवरुद्ध करने की आवश्यकता है और पहले इसे संसाधित करने के लिए हमारे वेब एप्लिकेशन को अनुमति दें। ऐसा करने के लिए, हमें पीडीएफ फाइलों (* .pdf) के लिए आईआईएस मैपिंग सेट करने की आवश्यकता होगी, आईआईएस को हमारे वेब एप्लिकेशन को अनुरोध भेजने के लिए कहा जाएगा।

आईआईएस 5/6

  1. ओपन इंटरनेट सूचना सेवा (आईआईएस) प्रबंधक में

  2. अपने वेब एप्लिकेशन के लिए, निर्देशिका टैब पर, कॉन्फ़िगरेशन बटन पर क्लिक करें।
  3. एप्लिकेशन कॉन्फ़िगरेशन विंडो के मैपिंग टैब पर, नया एप्लिकेशन एक्सटेंशन मैपिंग जोड़ने के लिए जोड़ें बटन पर क्लिक करें।
  4. निष्पादन योग्य फ़ील्ड में, दर्ज करें: सी: \ विन्डोज़ \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi।dll

  5. एक्सटेंशन क्षेत्र में, दर्ज करें: * .pdf

  6. सभी क्रिया का चयन करें और स्क्रिप्ट इंजन चेकमार्क और उस फ़ाइल मौजूद है की जाँच करें।
आईआईएस 7

  1. ओपन इंटरनेट सूचना सेवा (आईआईएस) प्रबंधक में

  2. हैंडलर मैपिंग सेटिंग खोलें।
  3. एक प्रबंधित हैंडलर जोड़ें।
  4. अनुरोध पथ के लिए दर्ज करें: * .pdf
  5. प्रकार के लिए, एप्लिकेशन के लिए कस्टम HTTP हैंडलर का चयन करें।

आईआईएस 7 में यह करने के लिए एक शॉर्टकट, के रूप में लेख में ऊपर उल्लेख किया है,, अनुभाग system.webServer संचालकों के भीतर web.config में मानचित्रण परिभाषित है इस प्रकार है:

<system.webServer> 
... 
<handlers> 
<add name="PDF" path="*.pdf" verb="*" type="CustomFileHandlerDemo.Handlers.FileProtectionHandler" resourceType="Unspecified" /> 
... 
</handlers> 
</system.webServer> 

वेब आवेदन के web.config में उपरोक्त कोड स्वचालित रूप से में प्रवेश जोड़ देगा IIS 7 हैंडलर मैपिंग अनुभाग।

ऊपर के चरणों आईआईएस के अपने संस्करण पर बात से बदल सकती है, लेकिन वेब अनुप्रयोग के लिए कोई दस्तावेज़ मानचित्रण जोड़ने के लिए समान होना चाहिए। एक बार कॉन्फ़िगर किया गया, पीडीएफ दस्तावेज़ों के लिए अनुरोध वेब एप्लिकेशन, पर भेजा जाएगा जहां आप पहुंच की अनुमति देने से पहले अनुरोध संसाधित कर सकते हैं।

में याद रखें, दृश्य स्टूडियो के अंतर्निहित वेब सर्वर, मॉड्यूल मैपिंग आवश्यक है, के रूप में फाइल के लिए सभी अनुरोधों वेब आवेदन के माध्यम से जाना, यह आसान कस्टम http हैंडलर परीक्षण करने के लिए नहीं कर रहे हैं।

क्योंकि आप कस्टम हैंडलर का उपयोग नहीं करते हैं, तो आपको केवल हैंडलर को एएसपी.NET डिफ़ॉल्ट हैंडलर पर सेट करने की आवश्यकता है। यह वही हैंडलर पहले से ही आईआईएस में ".aspx" पर सेट है।