2017-07-07 67 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