базовая служба wcf возвращает ошибку Служба '' имеет нулевые конечные точки приложений (не инфраструктурные) - PullRequest
2 голосов
/ 27 ноября 2010

Я создал пустое веб-приложение и добавил службу wcf с поддержкой ajax.Я не изменил фактический файл svc.cs, который я использую, что было предоставлено шаблоном

namespace SP.WebWCF {
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ActivateCardV1 {
    // To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json)
    // To create an operation that returns XML,
    //     add [WebGet(ResponseFormat=WebMessageFormat.Xml)],
    //     and include the following line in the operation body:
    //         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
    [OperationContract]
    public void DoWork() {
        // Add your operation implementation here
        return;
    }

    // Add more operations here and mark them with [OperationContract]
}

}

Я немного обновил конфигурацию, чтобы он выглядел так

 <service name="SP.WebWCF.ActivateCardV1">
    <endpoint address="https://services.mydomain.com" behaviorConfiguration="SP.WebWCF.ActivateCardV1AspNetAjaxBehavior"
      binding="webHttpBinding" contract="SP.WebWCF.ActivateCardV1" listenUri="/" isSystemEndpoint="true" />
  </service>

Однако, когда я пытаюсь запустить службу, я получаю сообщение об ошибке

Служба 'SP.WebWCF.ActivateCardV1' имеет нулевые конечные точки приложения (неинфраструктурные).Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за невозможности найти элемент службы, соответствующий имени службы, в файле конфигурации или из-за отсутствия конечных точек в элементе службы.

Что я делаю неправильно?

1 Ответ

1 голос
/ 27 ноября 2010

Начните с упрощения и стандартизации конфигурации службы xml:

  1. Использовать wsHttpBinding.
  2. Использовать http вместо https.
  3. Удалить ListenUri и isSystemEndpoint
  4. Удалить атрибут конфигурации поведения.
  5. Добавить имя контракта в путь.

Также удалите (Namespace = "") из ContractAttribute в вашем классе - я не уверен, что это делает, но вы указываете Пространство имен в атрибуте контракта конфигурации xml.

Как только вы упростили свою конфигурацию, она должна выглядеть примерно так:

<service name="SP.WebWCF.ActivateCardV1">
    <endpoint address="http://services.mydomain.com/ActivateCardV1" binding="wsHttpBinding" contract="SP.WebWCF.ActivateCardV1"/>
</service>

Если это работает, вы можете начать добавлять к нему сложность, чтобы выяснить, что его нарушает. Если это не работает, должно быть легче устранить неполадки (записаны ли какие-либо ошибки в журналы IIS?).

...