Использование обратной косой черты (% 5c) в URL-адресе REST WCF - PullRequest
1 голос
/ 14 октября 2008

Я создаю службу REST на WCF, и одним из методов, которые я пишу, является GetProfile, который возвращает профиль для данного имени пользователя. Имя пользователя будет включать домен пользователя и будет иметь следующий формат: «ДОМЕН \ имя пользователя».

Поэтому у меня есть служба с именем Profiles.svc, для которой настроена следующая конечная точка:

[OperationContract]
[WebGet(UriTemplate = "/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String username);

Однако, когда я пытаюсь зайти в службу по номеру http://server/profiles.svc/DOMAIN%5cusername (% 5c - это обратная косая черта в форме urlencode), я получаю следующую ошибку:

Server error in '/' Application
HTTP Error 400 - Bad Request

Это происходит, даже когда в моей реализации GetProfile нет кода, фактически определенного, поэтому я считаю, что ошибка возникает в момент, когда WCF пытается связать URI с методом.

Существуют ли какие-либо параметры, которые мне нужно добавить в конфигурацию веб-службы, чтобы разрешить добавление обратной косой черты к URL-адресам в службе REST WCF? Или обратная косая черта просто не разрешена?

1 Ответ

5 голосов
/ 14 октября 2008

Я подозреваю, что они просто не разрешены в этой части URL. Они в порядке в строке запроса, пока они закодированы. Как правило, я бы не помещал в путь часть URL, которая является недопустимой в имени файла (т.е.?).

Возможно, вы могли бы использовать другой символ для отделения домена от имени пользователя.

Вы также можете разделить имя пользователя на имя домена и имя пользователя и использовать обычный разделитель пути '/'. Я не знаком с этим достаточно, чтобы знать, точно ли вы так делаете, но это было бы моим лучшим предположением.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...