2016-05-02 8 views
0

Я получаю услугу, чтобы ответить, перейдя по URL-адресу /Resources/Feeder.svc на моем localhost. Однако я не могу получить доступ к /Resources/Feeder.svc/ping, хотя я использую следующий код.Не удается получить доступ к выходу JSON через URL-адрес

[ServiceContract] 
public interface IFeeder 
{ 
    [WebInvoke(Method = "GET", 
    ResponseFormat = WebMessageFormat.Json, 
    UriTemplate = "ping")] 
    [OperationContract] 
    string Ping(); 
} 

public class Feeder : IFeeder { public string Ping() { return "pung"; } 

Я пытался и без кучи атрибутов, пытаясь получить доступ к службе и без SVC и т.д. Нады. Я рисую пустым.

Я пытался следовать a guide или two, но я просто не вижу, что мне не хватает.

Я получаю пустые хиты - нет текста вообще. Ошибка говорит 400 плохой запрос. Не говорит мне ничего ... Что я могу сделать, чтобы отладить его? Скорее всего, это действительно глупо, потому что я устал. Извините, что ...

ответ

1

Вы не указали свой web.config, и я предполагаю, что вы, вероятно, забыли его отредактировать. Вам нужно сделать две вещи. Прежде всего, объявите поведение конечной точки. Во-вторых, добавьте сопоставление протоколов. Как это.

<system.serviceModel> 
    <!-- Addition of protocol mapping --> 
    <protocolMapping> 
    <add scheme="http" binding="webHttpBinding"/> 
    </protocolMapping> 
    <!-- End of addition --> 
    <behaviors> 
    <!-- Addition of endpoint behavior --> 
    <endpointBehaviors> 
     <behavior> 
     <webHttp /> 
     </behavior > 
    </endpointBehaviors> 
    <!-- End of addition --> 
    ... 
    </behaviors> 
    ... 
</system.serviceModel> 

Кроме того, я не думаю, что вы на самом деле нужно атрибут OperationContract, если вы используете WebGet. Это избыточно.