Вызов метода ajax службы WCF возвращает 404 - PullRequest
1 голос
/ 13 января 2010

Я развернул службу 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 и загружается (точки отрыва отмечены красным цветом при отладке).

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

Ответы [ 2 ]

1 голос
/ 13 января 2010

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

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

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

В любом случае, это работает сейчас!

1 голос
/ 13 января 2010

Я могу вспомнить одну вещь: вы пропустили раздел 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...