2015-05-19 90 views
5

我想將網站參數傳遞給webapi,但無法工作。將長參數傳遞給asp.net webapi

Webapiconfig:

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

的Web API控制器:採取帕拉姆並返回其他網站的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-代替 - >打控制器罰款,但如果我通過像更復雜

api /快照/%2Fdu-lieu%2Fong-da-y-Serie-A%2Fseason%2F1%2Fong-quan - >無法正常工作,返回404

請指教。

回答

1

爲什麼不把你的參數放入查詢字符串? 您的代碼將成爲

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

而且無論你調用API,所有創建請求的URL http://<whatever domain you use>/api/snapshot?param1=valueparam1&param2=valueparam2&param3=valueparam3

+0

不,我只希望它有一個獨特的參數,因爲其他站點會通過動態參數傳遞,我的webapi返回htmlsnapshot。我已經完全更新了我的代碼。 –

+0

是否有任何錯誤消息或定義「不工作」的內容? –

+0

它返回404錯誤。謝謝 –

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

} 

它現在,謝謝。