Есть ли способ иметь настраиваемые дружественные URL-адреса с WCF без IIS? - PullRequest
1 голос
/ 06 марта 2011

Есть ли способ иметь настраиваемые дружественные URL-адреса с WCF без IIS?

В частности, я собираюсь сделать что-то подобное через app.config, размещенный в моей собственной службе Windows:

[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)
{
   ...
}

1 Ответ

1 голос
/ 06 марта 2011

Да, конечно - разместите это в своей собственной службе NT, а в вашем app.config определите базовый адрес http. Шаблоны URI, которые вы определили в своем контракте на обслуживание, будут за пределами этого базового адреса:

<services>
   <service name="YourNamespace.YourServiceClass">
      <host>
         <baseAddresses>
             <add baseAddress="http://YourServer:9091/Services/" />
         </baseAddresses>
      </host>
      <endpoint address="" 
                binding="webHttpBinding" 
                contract="YourNamespace.IYourService" />    
   </service>
</services>

Тогда ваш шаблон URI будет добавлен к этому базовому адресу, поэтому в этом случае ваш GetFoo метод будет вызываться по адресу:

http://YourServer:9091/Services/foo/42

Обновление: Я только что воссоздал это здесь, и проблема в следующем: ваш шаблон URI определяет параметр с именем {id}, но метод, к которому вы применяете этот шаблон URI, не имеет никакого параметра id в списке параметров:

[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string fooID)

Вы должны убедиться, что эти вещи совпадают! С данным шаблоном URI вам нужно изменить объявление метода на:

[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)

(см. Параметр - теперь его имя id), и тогда у вас все будет в порядке - по крайней мере, у меня это прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...