Как разместить службу WCF REST по корневому адресу службы (без завершающего слеша)? - PullRequest
3 голосов
/ 17 сентября 2011

У меня есть служба, размещенная с помощью wsHttpBinding для адреса (базовый адрес хоста http://localhost/MyService).

В моем контракте (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.

Ответы [ 2 ]

3 голосов
/ 04 октября 2012

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

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

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

Убедитесь, что URL справкиотключено:

<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" />
0 голосов
/ 17 сентября 2011

Я думаю, что на ваш вопрос уже ответили: Простые маршруты URL в WCF Rest 4.0 без косой черты .

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

...