2015-05-19 11 views
5

पर लंबे पैरामीटर में पास करें मैं वेबपै के लिए वेबसाइट पैरामीटर पास करना चाहता हूं, लेकिन यह काम करने में विफल रहता है।एएसपीनेट वेबपी

Webapiconfig:

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

वेब एपीआई नियंत्रक: param लेने के लिए और अन्य वेबसाइट की htmlsnapshot लौट

[HttpGet] 
    [Route("api/snapshot/{param}")] 
    public string GetSnapShot(string param) 
    { 

     string fragment = param; 
     string content = ""; 

     if (fragment != null) 
     { 
      int firstSlash = fragment.IndexOf("/"); 
      if (firstSlash <= 2) 
       fragment = fragment.Substring(firstSlash + 1, fragment.Length - firstSlash - 1); 
      using (IWebDriver driver = new PhantomJSDriver()) 
      { 
       string url = String.Format("http://domain.com/{0}", fragment); 
       driver.Navigate().GoToUrl(url); 

       content = driver.PageSource; 
      } 
     } 
     return content; 
    } 

अगर मैं API/स्नैपशॉट/du-एवज कोशिश -> नियंत्रक मारा ठीक लेकिन अगर मैं /% 2Fdu-एवज% 2Fbong-डा-y-सेरी-ए% 2Fseason% 2F1% 2Ftong-क्वान की तरह

API/स्नैपशॉट एक और अधिक जटिल में पारित -> काम करने के लिए विफल रहता है, लौट 404

कृपया सलाह दें।

उत्तर

1

क्यों आप अपना param क्वेरी स्ट्रिंग में नहीं डालते ?? आपका कोड बन जाएगा

[HttpGet] 
[Route("api/snapshot")] 
public string GetSnapShot(string param1,string param2,string param3) 
{ 
} 

और से भी आप API कॉल, अनुरोध यूआरएल http://<whatever domain you use>/api/snapshot?param1=valueparam1&param2=valueparam2&param3=valueparam3

+0

नहीं, मैं केवल यह एक अनूठा परम चाहता हूं क्योंकि अन्य साइट गतिशील पैराम में गुज़र जाएगी, मेरी वेबपी एचटीएमएल स्नैपशॉट लौटाती है। मैंने अपना कोड ऊपर से अपडेट किया है। –

+0

क्या कोई त्रुटि संदेश या कुछ है जो "काम नहीं कर रहा" परिभाषित करता है? –

+0

यह 404 त्रुटि देता है। धन्यवाद –

0
[HttpGet] 
     [Route("api/snapshot/{*param}")] 
     public string GetSnapShot(string param) 
{ 

} 

अब यह काम करता है, धन्यवाद सब पैदा करते हैं।