2012-07-31 21 views
5

में RedirectToAction उपयोग मैं अपने ASP.Net वेबएपीआई आवेदन में RedirectToAction उपयोग कर रहा हूँ और मैं के बाद एक की कोशिश की।वेब एपीआई

return RedirectToAction("AuthenticateUser", "AuthenticationServiceWebApi", new RouteValueDictionary 
                    { 
                     {"userName", model.UserName}, 
                     {"password", model.Password} 
                    }); 

यह नीचे के रूप में पुनर्निर्देशन उत्पन्न करता है।

127.0.0.1:81/authenticationservicewebapi/authenticateuser/admin/[email protected] 

लेकिन, क्योंकि मैं वेबएपीआई का उपयोग कर रहा हूं, मुझे नीचे जैसा यूआरएल होना चाहिए।

127.0.0.1:81/api/authenticationservicewebapi/authenticateuser/admin/[email protected] 

मैं यह कैसे कर सकता हूं?

उत्तर

3

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

: कुछ बातें वास्तव में यहां जोड़ते नहीं है (? तुम क्यों यूआरएल में पासवर्ड से होकर गुजरेगा)

लेकिन ...

आपके url संरचना मैं अपने मार्ग लगता था यह देखते हुए की तरह कुछ है

routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{action}/{id}/{id2}", 
     defaults: new { id = RouteParameter.Optional, id2 = RouteParameter.Optional } 
    ); 

फिर उस को देखते हुए, मुझे लगता है कि अपने authenticateuser होना चाहिए कुछ की तरह:

public HttpResponseMessage AuthenticateUser([FromUri]string id, [FromUri]string id2) 

यदि हां, तो एक MVC नियंत्रक आप ne से इस पर रीडायरेक्ट करने एड:

 return Redirect(
      Url.RouteUrl("DefaultApi", 
       new { httproute = "", 
         controller = "AuthenticationServiceWebApi", 
         action = "AuthenticateUser", 
         id = model.UserName, 
         id2 = model.Password 
      })); 
+12

'RedirectToAction' MVC नहीं जाल एपीआई है। – Aliostad

+0

हाँ, आप रीडायरेक्ट का उपयोग करके उस पर काम कर सकते हैं जो एक स्ट्रिंग में ले जाता है और वहां एक वेब एपी रूट यूआरएल यूआरएलहेल्पर के साथ बनता है। सुंदर नहीं है लेकिन मुझे यकीन नहीं है कि ओपी क्या हासिल करने की कोशिश कर रहा है। –

+0

अच्छी तरह से काम करता है, बहुत बहुत धन्यवाद। – thilok

4

उपयोगकर्ता प्रमाणीकृत नहीं है, तो आपको यहां रीडायरेक्ट नहीं करना चाहिए। दूसरी तरफ आमतौर पर कोई इंटरैक्टिव उपयोगकर्ता नहीं होता है, इसलिए आपको रीडायरेक्ट के बजाय वास्तव में HTTP स्थिति कोड 401 वापस करना चाहिए।


ASP.NET वेब एपीआई में कोई समकक्ष नहीं है।

आप जोर देते हैं तो यहाँ यह कर यह है:

आप HttpResponseException फेंक:

var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Found); 
httpResponseMessage.Headers.Location = new Uri(myAddress, UriKind.Relative); 
throw new HttpResponseException(httpResponseMessage); 
+0

मुझे लगता है कि यू यह नहीं मिला सर। मैं चाहता हूं कि इस विधि का उपयोग कर एक वेब एपीआई कार्रवाई को ट्रिगर करना है। – thilok

+0

@thilok मैं भी तुम पर शक समझा कि मैं क्या मतलब है। लेकिन अगर आप इसे करने का आग्रह करते हैं तो वैसे भी यहां एक अपडेट है। – Aliostad

0

मैं भी एक साधारण समाधान के साथ आया था। ऊपर के रूप में बहुत अच्छा नहीं है, लेकिन साझा करने लायक है।

 string post_data = "userName=th&[email protected]"; 

     string uri = "http://127.0.0.1:81/api/authenticationservicewebapi/authenticateuser"; 

     // create a request 
     HttpWebRequest request = (HttpWebRequest) 
     WebRequest.Create(uri); 
     request.KeepAlive = false; 
     request.ProtocolVersion = HttpVersion.Version10; 
     request.Method = "POST"; 

     // turn our request string into a byte stream 
     byte[] postBytes = Encoding.ASCII.GetBytes(post_data); 

     // this is important - make sure you specify type this way 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.ContentLength = postBytes.Length; 
     Stream requestStream = request.GetRequestStream(); 

     // now send it 
     requestStream.Write(postBytes, 0, postBytes.Length); 
     requestStream.Close(); 

आप सभी को धन्यवाद।

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