2011-09-16 5 views
3

У меня есть служба, размещенная с использованием 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.

ответ

3

я понял, как это сделать:

Убедитесь, что генерация WSDL, по умолчанию отключена (или, по крайней мере, не используя URL по умолчанию):

<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> 

Убедитесь, что помощь URL отключен:

<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" /> 
0

думаю, на ваш вопрос уже ответил: Simple URL routes in WCF Rest 4.0 without trailing slash.

Вы можете проверить это?

+0

Я видел это раньше, хотя, глядя на него более близко, я не видел код ServiceRoute. Мое первоначальное предположение заключалось в том, что в сервисе размещался сайт www.domain.com, а используемым UriTemplate были «автомобили». Позвольте мне поиграть с моим кодом немного больше. – Travis

+0

Глядя на это больше, он не отвечает на мой вопрос. Это добавление маршрута, так что несколько служб по существу размещаются по одному и тому же адресу. Я по существу просто пытаюсь разместить что-то на корневом адресе (без конечной косой черты) – Travis