Вызов метода ajax службы WCF возвращает 404

Я развернул службу WCF в SharePoint, и на моей машине все работает нормально. Переход к .svc работает, и, как и ожидалось, переход к service.svc/Operation создает "сообщение о том, что метод не разрешен". Публикация в службу с помощью jQuery также отлично работает на моей собственной машине.

Однако, когда мой коллега получает последнюю версию из системы управления версиями и развертывает эту функцию, он может перейти к .svc в порядке, но переход к service.svc/Operation генерирует 404, и, конечно же, публикация с помощью jQuery тоже не работает.

Я думаю, это связано с чем-то, что я настроил на своей машине (и забыл потом :-S), а мой коллега не настроил еще. Мы запустили ServiceModelReg -i на его машине.

Файл .svc выглядит следующим образом:

<%@ ServiceHost Language="C#" Debug="true" Service="NameSpace.ServiceName" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>

Сборка сервиса загружается в раздел сборок web.config и загружается (при отладке точки останова отображаются красным).

Редактировать: Кто-нибудь?


person Colin    schedule 13.01.2010    source источник


Ответы (2)


Одна вещь, о которой я могу думать, это то, что вы пропустили раздел serviceModel в web.config... так ли это? это что-то вроде

  <configuration>
    <system.serviceModel>
      <services>
        <service behaviorConfiguration="behavior1" name="HelloWorld.service1">
          <endpoint address="" binding="wsHttpBinding" contract="MyServices.IHelloWorld" />
          <host>
            <baseAddresses>
              <add baseAddress="http://server/_wcf/HelloWorld.svc" />
            </baseAddresses>
          </host>
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="behavior1">
            <serviceMetadata httpGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="false" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>
  </configuration>
person Ariel    schedule 13.01.2010
comment
В папке файла .svc есть небольшой файл web.config для включения совместимости с asnet, но поскольку я использую WebScriptServiceHostFactory, остальное мне не нужно. - person Colin; 13.01.2010

Мне удалось решить проблему. Мы использовали отличное решение с открытым исходным кодом Сахила Малика, WCFSupport. Почему-то dll не загружалась (хотя прописка была в web.config для HttpModule и сборки).

После первой попытки самой службы в фиктивном проекте веб-приложения, который я создал в Visual Studio (добавил файл .svc, добавил ссылку на сборку в dll моей службы в web.config и добавил новый сайт в IIS), я пришел к выводу, что это была не сама служба и не проблема с конфигурацией в IIS (например, инструмент servicemodelreg.exe).

Таким образом, это должен был быть код, который сопоставлял запросы для .svc, и, что более важно, запрос на любую из его операций не работал. Я скопировал код Сахила в наше собственное решение, развернул его, и все заработало. Почему код работает сейчас, понятия не имею, может быть, исходная dll WCFSupport была повреждена, мы никогда не узнаем.

Во всяком случае, теперь это работает!

person Colin    schedule 13.01.2010