6

मैं asp.net वेब एपीआई में हूँ। प्रवेश पद्धति में मैं db के खिलाफ उपयोगकर्ता/पासवर्ड की जांच करें और यदि वे मेल नहीं खाते, मैं401 के साथ भेजा जा रहा है संदेश: Asp.net वेब-api

var content = new StringContent("Invalid user name or password"); 
var message = new HttpResponseMessage(HttpStatusCode.Unauthorized); 
message.Content = content; 
throw new HttpResponseException(message); 

तरह invalid user or password method साथ 401 स्थिति कोड के साथ लौट लेकिन एपीआई मेरे संदेश को अनदेखा करके कुछ HTML बस वापस जाने के लिए की तरह लगता है

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title> 
<style type="text/css"> 
<!-- 
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;} 
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;} 
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF; 
background-color:#555555;} 
#content{margin:0 0 0 2%;position:relative;} 
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} 
--> 
</style> 
</head> 
<body> 
<div id="header"><h1>Server Error</h1></div> 
<div id="content"> 
<div class="content-container"><fieldset> 
    <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2> 
    <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3> 
</fieldset></div> 
</div> 
</body> 
</html> 

कि क्यों है? मैं इसे कैसे ओवरराइड कर सकता हूं? इस प्रतिक्रिया के

उत्तर

1

एक संभावित कारण आईआईएस वेब साइट फार्म प्रमाणीकरण देने के लिए कॉन्फ़िगर किया जा रहा है। वेब एपीआई के लिए फॉर्म प्रमाणीकरण को अक्षम करने के लिए आईआईएस को कॉन्फ़िगर करने पर इस older but still valid post को देखें।

+0

अगर ऐसी बात थी, यह 401 के लिए कस्टम एचटीएमएल फेंकने के बावजूद प्रवेश करने के लिए पृष्ठ रीडायरेक्ट नहीं होगा? –

+0

कृपया ध्यान दें कि प्रतिक्रिया कोड सही 401 है और यह लॉगिन पेज पर रीडायरेक्ट नहीं कर रहा है। समस्या यह है कि यह अपनी पसंद के एचटीएमएल लौट रहा है। –

1

मेरा मानना ​​है कि प्रतिक्रिया मिल रहा है आईआईएस से और नहीं वेब एपीआई से है। यदि आप अपने एपीआई के भीतर प्रमाणीकरण प्रक्रिया को स्वयं संभालना चाहते हैं तो आपको आईआईएस को यह बताना होगा कि अज्ञात पहुंच की अनुमति है ताकि वह रास्ते से बाहर निकल सके।

इसके अलावा

, तुम वापस कब एक 401 आप एक www प्रमाणित हैडर लौटना चाहिए (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2 देखें)। यह ग्राहक को बताता है कि किस प्रकार की प्रमाणीकरण की अनुमति है।

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