ASP.NET路由 - 最后有和没有斜杠

时间:2011-04-18 20:11:46

标签: asp.net wcf asp.net-mvc-routing

考虑以下服务合同:

[WebGet(UriTemplate = "/stores")]
DTO.Stores GetAllStores();

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string name);

我可以访问这两个网址:http://localhost/v1/storeshttp://localhost/v1/stores/Joe。但是Url http://localhost/v1/stores/(注意结尾处的斜杠)会返回“Endpoint not found”错误。理想情况下,我希望http://localhost/v1/stores/调用GetAllStores()。

我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:0)

我会尝试使用波浪号。或许“〜/ stores”?

或者,通过路由,将“/”放在前面。

答案 1 :(得分:0)

如果使用“string?name”作为参数怎么办?

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name);

由于你所拥有的两种方法都返回相同的东西(DTO.Stores),你可以使用一种方法来获取商店而不是两种(就像你现在所做的那样)。像这样:

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name)
{
    if(string.IsNullOrEmpty(name))
    {
        //get specific store
    }
    else
    {
        //get all stores
    }
}

P.S。:我不确定这是否适用于WCF,但试一试。 ; - )