Удалите .svc из службы REST WCF с включенными «? Wsdl» и «/ help» - PullRequest
2 голосов
/ 06 мая 2011

Ни один из предыдущих вопросов / ответов SO не привел меня к полному решению REST / WCF, которое удаляет расширение SVC из всех аспектов службы.

В частности, я имею в виду servicename/help и servicename/wsdl ... но я знаю, что это возможно. Вот рабочий пример того, кто может удалить расширение WCF из ссылки / help.Кроме того, он сделал невозможным вызов .svc напрямую с расширением.Похоже, что WSDL не существует (хотя я бы предпочел оставить это)

Как мне сделать, чтобы мое приложение WCF REST действовало так же, как эта ссылка?

Вот перезапись URL IISэто заставляет меня расстаться.Это выглядит довольно странно, потому что, если у меня нет первого (из двух) переписываний, тогда веб-служба случайно потерпит неудачу.

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>


    <rewrite>
      <rules>
        <rule name="test1.svc" stopProcessing="true" >
          <match url="^test1.svc(.*)$"/>
        </rule>
        <rule name="test1" stopProcessing="true" >
          <match url="^test1(.*)$"/>
          <action type="Rewrite" url="/test1.svc{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>

Ответы [ 2 ]

7 голосов
/ 06 мая 2011

Я предполагаю, что вы используете .Net Framework 4, основываясь на ссылке, которую вы разместили. В этом случае вам не нужно использовать файлы .svc, поскольку теперь он интегрируется с ASP.NET маршрутизация . Поэтому вы можете использовать новый класс ServiceRoute , чтобы добавить URL-адреса ваших служб в таблицу маршрутов ASP.NET . Для получения дополнительной информации см. Следующую статью .

0 голосов
/ 07 мая 2011

WCF 4 также позволяет предоставлять адресацию псевдонимов с помощью активации без файлов и служб активации Windows. (БЫЛ)

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment>
      <serviceActivations>
        <add relativeAddress="/GreetingService" service="GreetingService"/>
      </serviceActivations>
    </serviceHostingEnvironment>
  </system.serviceModel>
</configuration>
...