ASP.NET Routing - с косой чертой и без нее в конце - PullRequest
2 голосов
/ 19 апреля 2011

Учитывая следующий Договор на обслуживание:

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

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

Я могу достичь следующих двух URL: http://localhost/v1/stores и http://localhost/v1/stores/Joe. Однако URL http://localhost/v1/stores/косая черта в конце) возвращает мне ошибку «Конечная точка не найдена».В идеале я хотел бы, чтобы http://localhost/v1/stores/ вызывал GetAllStores ().

Как я могу это сделать?Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Что если вы используете "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, но попробуйте. ; -)

0 голосов
/ 21 апреля 2011

Я бы попробовал вставить тильду. Может быть, "~ / stores"?

Или, при маршрутизации, опустите "/" на передней панели.

...