2017-07-07 63 views
2

我試圖創建一個帶有一個String參數的自定義路由的Web API方法,但是這在應用程序啓動時出現錯誤 - 所以我甚至不需要點擊路線或應用程序中斷的方法。使用字符串參數設置路由屬性

// Pass String to TMS and Return an ID 
[System.Web.Http.HttpGet] 
[System.Web.Http.Route("api/job/import/{import:string}")] 
public int TmsImport(string import) 
{ 
    var TmsId = 0; 
    if (import.Length > 0) 
    { 
     TmsId = 1; 
    } 
    return (TmsId); 
} 

在Global.asx以下方法應用遊:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

當我通過一個int的方法同樣的方法工作,但它似乎並不能夠識別在參數中輸入名稱'string'。我在這裏看到類似問題的答案:call to web api with string parameter - 但我無法弄清楚這個答案會發生什麼變化?如果它將在JS的調用或路由配置中?

+0

只是刪除':從'string' {import:string}'並嘗試連接到「api/job/import/somestring」 –

+0

工作感謝:) –

+0

如果你不介意,我會發布這個答案 –

回答

1

你只需要從{import:string}刪除:string,並嘗試連接到

「API /任務/導入/ somestring」

MSDN article

+0

[docs](https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/routing-and- action-selection)在web-api路由中可能對了解爲什麼這會起作用也很有用。 – Jordan