Не удается получить список операций службы WCF с клиентом Web Service Studio - PullRequest
2 голосов
/ 21 января 2011

Я создал простую службу WCF, размещенную на веб-сайте ASP.NET:

[ServiceContract]
public interface IPaymentNotificationReceiver
{
    [OperationContract]
    void InvoiceProcessed(string invoiceId);
}   


public class PaymentNotificationReceiver : IPaymentNotificationReceiver
{
    public void InvoiceProcessed(string invoiceId)
    {
        Logger.Write("'InvoiceProcessed' method was called with InvoiceId='" + 
            invoiceId + "'");
    }
}

<system.serviceModel>
  <services>
    <service 
      behaviorConfiguration =
        "NotificationService.PaymentNotificationReceiverBehavior" 
      name="NotificationService.PaymentNotificationReceiver">
      <endpoint address="" binding="wsHttpBinding"
        contract="NotificationService.IPaymentNotificationReceiver">
        <identity>
          <dns value="localhost"/>
        </identity>
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" 
          contract="IMetadataExchange"/>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="NotificationService.PaymentNotificationReceiverBehavior">
        <!-- To avoid disclosing metadata information, set the value below 
          to false and remove the metadata endpoint above before deployment 
        -->
        <serviceMetadata httpGetEnabled="true"/>
        <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment to avoid 
          disclosing exception information -->
        <serviceDebug includeExceptionDetailInFaults="true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

Я могу добавить ссылки на эту службу как на службу WCF, так и на WebService.Приложение WcfTestClient успешно распознало службу и ее методы.

Но «Студия веб-служб» (http://webservicestudio.codeplex.com/) не может получить список операций ... Почему? Как это диагностировать / устранить?

PS Я работаю под VS 2008, используя .NET 3.5

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Проблема была в конфигурации привязки конечной точки. Чтобы быть доступным из WebService, он должен быть 'basicHttpBinding'.

<endpoint address="" 
          binding="basicHttpBinding" 
          contract="NotificationService.IPaymentNotificationReceiver"/>
1 голос
/ 21 января 2011

Вы, вероятно, должны указать конкретный URL WSDL / MEX, а не только URL службы.Я полагаю, что VS.NET делает некоторый «сниффинг» (проверяя ваш url + «? Wsdl» или что-то в этом роде), чтобы попытаться найти конечную точку, предполагая, что она выставлена.

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