2016-01-08 1 views
2

Насколько я могу сказать я имитировал принятых решения this post и this post. Если я не слепой (и я надеюсь, что я в этот момент), у меня есть пятнышка app.config для моего очень простой службы WCF:Мертвого простого WCF - 405 Метод не допускаются

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="RESTBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<services> 
    <service name="Vert.Host.VertService.RSVPService"> 
    <endpoint 
     address="/RSVP" 
     binding="webHttpBinding" 
     contract="Vert.Host.VertService.IRSVP" 
     behaviorConfiguration="RESTBehavior" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8080/Vert" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
</system.serviceModel> 

Вот соответствующий Договор на оказание услуг и реализация:

namespace Vert.Host.VertService 
{ 
    [ServiceContract] 
    public interface IRSVP 
    { 
     [OperationContract] 
     bool Attending(); 

     [OperationContract] 
     bool NotAttending(); 
    } 

    public class RSVPService : IRSVP 
    { 
     public bool Attending() 
      return true; 

     public bool NotAttending() 
      return true; 
    } 
} 

Я хостинг все с помощью консольного приложения:

class Program 
{ 
    public static void Main() 
    { 
     // Create a ServiceHost 
     using (ServiceHost serviceHost = new ServiceHost(typeof(RSVPService))) 
     { 
      serviceHost.Open(); 
      // The service can now be accessed. 
      Console.ReadLine(); 
     } 
    } 
} 

Все, что я хочу сделать, это стоять это крошечное обслуживание, но я не могу ударить эту конечную точку с http://localhost:8080/Vert/RSVP/Attending. Я все еще получаю 405 Method not allowed как response.I'm с помощью Visual Studio Community 2015, IIS10, нацеливание .NET 4.6

вещей, я попытался из предложений:

  • Я дал мое служебное explicitly- именованного поведения. Не повезло.

Что мне не хватает?

ответ

0

Обязательно украсьте методы обслуживания с [WebGet] атрибута (ссылка System.ServiceModel.Web.dll)

Т.е. изменение услуг от

public class RSVPService : IRSVP 
{ 
    public bool Attending() 
     return true; 

    public bool NotAttending() 
     return true; 
} 

в

public class RSVPService : IRSVP 
{ 
    [WebGet] 
    public bool Attending() 
     return true; 

    [WebGet] 
    public bool NotAttending() 
     return true; 
} 

Решает проблему.

0

Честно говоря, не уверен, что это будет иметь значение, но у меня есть ссылка на поведение службы. Дайте поведение сервиса имя:

<serviceBehaviors> 
    <behavior name="ServiceBehavior"> 

Затем связать его с вашим услугам:

<service name="Vert.Host.VertService.RSVPService" behaviorConfiguration="ServiceBehavior">

+0

Первое, что я пробовал после публикации этого сообщения. Не повезло :( – Matt

+1

Не знаю, тогда я в значительной степени получил свою работу, следящую за верой. Я могу только рекомендовать включить ведение журнала, см. [Этот пост] (http://stackoverflow.com/a/10905836). – Ian

Смежные вопросы