0

我有WebAPI的部署時間問題,並將不勝感激,如果有人可以提供幫助。WebAPI MapHttpRoute問題與類型列表和布爾操作參數

路線:

 public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi2", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi3", 
      routeTemplate: "api/{controller}/{action}/{lines}/{swapAxis}", 
      defaults: new 
      { 
       controller = "LVChart", 
       action = "Get", 
       lines = RouteParameter.Optional, 
       swapAxis = RouteParameter.Optional 
      } 
     ); 
    } 

操作:

// GET api/<controller> 
    public IEnumerable<string> Get1() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
    // GET api/<controller> 
    [ActionName("Get")] 
    public string Get([FromUri] List<Line> lines, bool swapAxis) 
    { 
     _lineBuilder = new LVLineBuilder(swapAxis); 
     string result = BuildLines(lines); 
     return result; 
    } 

OK,現在這裏的問題。 Get1和Get(..)在localhost中運行良好。然而,一旦部署在服務器上(注:我只使用發佈嚮導部署網頁/ JS/DLL)GET1工作正常,但獲取拋出「500內部服務器錯誤」

爲GET1的URL是

.../api/LVChart/Get1/ 

雖然得到的是

.../api/LVChart/Get/?lines[]=15&lines[]=11&lines[]=12&lines[]=3&lines[]=10&lines[]=7&swapAxis=false 

我真的不多了關於如何解決這一選項。

感謝

+1

嘗試使用像ELMAH工具來記錄錯誤,這樣就可以檢查堆棧跟蹤,看看究竟拋出了什麼樣的異常。 500內部服務器錯誤可能是操作方法拋出的任何異常。 – danludwig

+0

嘗試這樣做,但它現在顯示安裝elmah錯誤...不能相信我的運氣 – daehaai

+0

我懷疑我的maproute有什麼問題嗎? – daehaai

回答

1

對於這項工作,我覺得您的自定義路線應該來dafault路線之上。即DefaultApi2和DefaultApi3應該高於DefaultApi1。

而且是問題的REST你也可以嘗試避免額外的默認路由,並且只使用默認路由1,做HttpGet/api/LVChart,這樣

.../api/LVChart?lines[]=15&lines[]=11&lines[]=12&lines[]=3&lines[]=10&lines[]=7&swapAxis=false