使用字符串参数设置路由属性

Web*_*olf 5 c# asp.net-web-api2

我正在尝试使用接受 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);
}
Run Code Online (Sandbox Code Playgroud)

应用程序中断 Global.asx 中的以下方法:

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

当我将 int 传递给该方法时,同样的方法可以工作,但它似乎无法识别参数中的名称“string”。我确实在这里看到了类似问题的答案:call to web api with string parameter - 但我无法弄清楚该答案的变化在哪里?是在 JS 调用中还是在路由配置中?

Sam*_*sov 4

您只需删除:string{import:string}尝试连接到

“api/作业/导入/一些字符串”

MSDN 文章