2

I've created a simple WCF service hosted by ASP.NET web site:

[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>

I can add references to this service as to WCF service, as to WebService. WcfTestClient application successfully recognized service and its methods.

But "Web Service Studio" (http://webservicestudio.codeplex.com/) can't get a list of operations... Why? How to diagnose/resolve that?

P.S. I work under VS 2008 using .NET 3.5

casperOne
  • 73,706
  • 19
  • 184
  • 253
Budda
  • 18,015
  • 33
  • 124
  • 206

2 Answers2

2

The problem was in endpoint binding configuration. To be accessible from WebService it should be 'basicHttpBinding'.

<endpoint address="" 
          binding="basicHttpBinding" 
          contract="NotificationService.IPaymentNotificationReceiver"/>
casperOne
  • 73,706
  • 19
  • 184
  • 253
Budda
  • 18,015
  • 33
  • 124
  • 206
  • You should move this into your question, or accept this as the answer so it moves to the top. – casperOne Jan 21 '11 at 19:48
  • as it is actual 'solution' I would like to keep it in answers section. I will be able to accept it as a 'accepted answer' in two days after question was created (stackoverflow restriction for accepting own answers) – Budda Jan 21 '11 at 22:22
1

You probably have to give it the specific WSDL/MEX url, not just the url of the service. I imagine that VS.NET does some "sniffing" (checking your url + "?wsdl" or something of the sort) to try and find the endpoint, assuming it is exposed.

casperOne
  • 73,706
  • 19
  • 184
  • 253
  • I've tried both clean service address and address with "?wsdl" suffix - both don't work – Budda Jan 21 '11 at 17:19