Не удалось сопоставить путь при настройке службы REST WCF для IIS 7.5 - PullRequest
1 голос
/ 03 июня 2011

У меня проблема с построением и развертыванием служб WCF Rest с IIS 7.5.Если я открою Visual Studio 2010 и создам новый проект типа «Приложение-служба WCF», а затем опубликую его в IIS, он будет работать нормально.Однако, когда я пытаюсь указать свойство WebGet в контракте операции из интерфейса IService.cs, я получаю сообщение об ошибке.

Интерфейс (из IService.cs):

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "hello/?n={name}")]
    Message SayHello(string name);
}

Соответствующий метод(из Service.svc):

public Message SayHello(string name) {
   return Message.CreateMessage(MessageVersion.None, "*", "Hello "+name+"!");
}

Я пытаюсь опубликовать это в приложении IIS, которое я создал (http://localhost/rest/) под моим корневым сайтом (http://localhost/)), и публикация работает успешно, однако, когда я пытаюсьЗаходя на любую страницу из браузера, я получаю следующую ошибку:

Failed to map the path '/rest'.

Я также пытался изменить UriTemplate на [WebGet(UriTemplate = "rest/hello/?n={name}")], и я получаю ту же ошибку.

Я использую конфигурацию по умолчаниюфайл из IIS:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Следует также упомянуть, что я использую пул приложений для .NET 4.0.

Пожалуйста, помогите, поскольку я очень озадачен этим.

Заранее спасибо!

Джеффри Кевин Прай

1 Ответ

1 голос
/ 17 июня 2011

Поскольку никто не интересовался этим вопросом :) Я понял его самостоятельно.

Кажется, мне пришлось сделать следующее, чтобы он заработал:

  1. Открыть командную строку (cmd.exe)
  2. cd C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ (зависит от настроек)
  3. Выполнить aspnet_regiis.exe -я

Это добилось цели.Сейчас все работает.Надеюсь, я смогу спасти кого-то несколько часов от Google.

Спасибо,

Джеффри Кевин Прай

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