5

मेरे पास एक मौजूदा एएसपी.NET एप्लिकेशन है जो फॉर्म प्रमाणीकरण साइट-व्यापी लागू करता है। प्रति उदाहरण एक अलग डेटाबेस के साथ, एप्लिकेशन को कई उदाहरणों में तैनात किया गया है (उदा।, ग्राहक 1, ग्राहक 2, परीक्षण, देव, आदि ...)। एसएसएल खेल में है। इंस्टेंस कॉन्फ़िगरेशन एक XML कॉन्फ़िगरेशन फ़ाइल के माध्यम से है।फॉर्म प्रमाणीकरण आवेदन के अंदर एएसपी.नेट वेब सेवा

मेरे पास कुछ डेटा अपलोड/डाउनलोड करने की अनुमति देने की एक नई आवश्यकता है, जिसे मैं सार्वजनिक वेब सेवा के रूप में कार्यान्वित करना चाहता हूं।

मेरा प्रारंभिक विचार एप्लिकेशन के उपनिर्देशिका (उदा।, ~/सेवाओं) के लिए फॉर्म प्रमाणीकरण को चुनिंदा रूप से अक्षम करना था, और उसके बाद एसओएपी हेडर या इसी तरह के प्रमाणीकरण करना था।

हालांकि, मुझे फॉर्म ऑथ को चुनिंदा रूप से अक्षम करने का कोई तरीका नहीं मिल रहा है।

प्रश्न: क्या ऐसा करने का कोई तरीका है? मैंने वेब कॉन्फ़िगरेशन में < स्थान > टैग का कोई फायदा नहीं लिया है।

यदि नहीं, तो इसे कैसे सेट अप करें इसके लिए आपकी क्या सिफारिशें हैं? मैं निम्नलिखित विकल्पों के बारे में सोच सकता हूं:

1) मेरे समाधान में एक नई "सेवा" प्रोजेक्ट बनाएं, और फिर प्रत्येक उदाहरण में उस निर्देशिका पर एक अलग आईआईएस एएसपी.NET एप्लिकेशन कॉन्फ़िगर करें। (प्रो: उदाहरण कॉन्फ़िगरेशन तक आसान पहुंच, जिसे भविष्य में आवश्यक हो सकता है। Con: प्रत्येक प्रासंगिक उदाहरण के लिए कॉन्फ़िगरेशन बोझ)।

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

3) ??

स्पष्टीकरण: मैंने यहां जवाब देखा: Override ASP.NET forms authentication for a single page, लेकिन किसी स्थान टैग का उपयोग मदद नहीं कर रहा है (वेब ​​सेवा के लिए अनुरोध अभी भी पुनर्निर्देशित हैं)। मेरी web.config में प्रासंगिक वर्गों इस तरह दिखेगा:

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="Login.aspx"/> 
    </authentication> 
    <authorization> 
    <deny users="?"/> 
    <allow users="*"/> 
    </authorization> 
</system.web> 

<location path="~/Services/MyService.asmx"> 
    <system.web> 
    <authentication mode="None" /> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</location> 
+3

हर बार जब मैं हर एक web.config पथ "सेवा/MyService.asmx" नहीं "~/सेवा/MyService.asmx" के रूप में किया गया है में स्थान टैग का उपयोग किया है आप को निर्दिष्ट करने की कोशिश की है यह tilde-slash के बिना? –

+0

वह था। मैं कसम खाता था कि मैंने इसके 3 अलग-अलग संस्करणों की कोशिश की थी। इस बार मैंने ब्राउज़र बंद कर दिया और आपका समाधान पूरी तरह से काम किया। – dividius

उत्तर

4

मैं स्थान टैग, काम करेंगे, जहां आप सेवाएं फ़ोल्डर सभी उपयोगकर्ताओं को निर्दिष्ट और अनुमति देते हैं लगता होगा, कुछ की तरह:

<location path="services"> 
     <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
     </system.web> 
</location> 

लेकिन आपने कहा कि काम नहीं किया है, क्या आपने सेवाओं फ़ोल्डर में web.config फ़ाइल डालने और फॉर्म प्रमाणीकरण को अक्षम करने और उस फ़ाइल में सभी उपयोगकर्ताओं को अनुमति देने की कोशिश की है?

+0

ऊपर बताए गए अनुसार, मैंने जो गलती की थी, वह "सेवा" – dividius

+0

की बजाय पथ के लिए "~ \ Services" निर्दिष्ट करने में थी, यह काम कर रहा है, शर्म की एएसपीनेट असंगत है जहां आप ~/ने मुझे पकड़ लिया है कुछ मौकों पर –

0

आपके पास सेवा फ़ोल्डर में वेब (कॉन्फ़िगर) वेबकॉन्फिग फ़ाइल भी हो सकती है, जो पहुंच नियंत्रण सेट के साथ अज्ञात है।

0

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

<authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
संबंधित मुद्दे