У меня есть несколько конечных точек RESTful, таких как:
System.Security.Role.svc
System.Security.User.svc
etc.
Это должно быть пространство имен, поэтому наши RESTful URL будут выглядеть так:
/rest/{class namespace}/{actions}
Я попробовал несколько примеров, чтобы удалить расширение SVC, когда моя конечная точка содержит несколько периодов, однако, похоже, ничего не работает.
Я протестировал пакет WCF REST Contrib (http://wcfrestcontrib.codeplex.com/), в этом примере (http://www.west -wind.com / weblog / posts / 570695.aspx ) и еще один пост StackOverflow ( Как удалить расширение ".svc" в службе RESTful WCF? ).
Это прекрасно работает, когда моя конечная точка выглядит примерно так:
Echo.svc
Правильно удалит расширение SVC.
Любые идеи о том, как обрабатывать конечные точки с несколькими периодами в имени конечной точки?
EDIT:
После некоторого дальнейшего тестирования я обнаружил, что он терпит неудачу, потому что всякий раз, когда вы делаете:
string path = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
Если конечная точка содержит несколько периодов, она удаляет все после конечной точки, вызывая сбой всех стандартных IHttpModule.
Пример:
Если я позвоню http://localhost/services/Echo/test, мой относительный путь к файлу приложения вернет значение:
~/echo/test
Однако, если я сделаю вызов как http://localhost/services/System.Security.User/test,, тогда мой относительный путь к файлу приложения вернет значение:
~/system.security.user
Я пропускаю / test в конце в этой ситуации.