У меня есть служба, размещенная с использованием wsHttpBinding по адресу (базовый адрес хоста http://localhost/MyService).Как я могу разместить службу REST WCF на корневом адресе службы (без конечной косой черты)?
В моем контракте (IMyService
), у меня есть:
[OperationContract]
[WebInvoke(
Method = "GET",
UriTemplate = "/")]
Stream GetRootPage();
Если я запускаю свою службу и перейти к http://localhost/MyService/, он отлично работает. Если я перейду к http://localhost/MyService, меня приветствует страница WCF по умолчанию, указывающая, что служба публикации метаданных не включена для этой службы.
Я пробовал различные комбинации из UriTemplate:
- UriTemplate = ""
- UriTemplate = "/"
- UriTemplate = "*"
В сочетании с базой обслуживания адрес:
Все они дают такое же поведение. В какой-то момент я мог бы поклясться, что это работает, хотя я думаю, что, возможно, я использовал подпуть в UriTemplate. Я знаю, что если у меня есть UriTemplate из «/ abc/123 /», я могу перейти к/abc/123 (без конечной косой черты), потому что WCF фактически автоматически перенаправляет HTTP 307.
Я использую .NET 4.0.
Я видел это раньше, хотя, глядя на него более близко, я не видел код ServiceRoute. Мое первоначальное предположение заключалось в том, что в сервисе размещался сайт www.domain.com, а используемым UriTemplate были «автомобили». Позвольте мне поиграть с моим кодом немного больше. – Travis
Глядя на это больше, он не отвечает на мой вопрос. Это добавление маршрута, так что несколько служб по существу размещаются по одному и тому же адресу. Я по существу просто пытаюсь разместить что-то на корневом адресе (без конечной косой черты) – Travis