Невозможно сделать 'GET' на службе WCF - PullRequest
1 голос
/ 12 июля 2010

У меня есть простой контракт WCF, который содержит операции «GET» и «POST». У меня есть служба, работающая на localhost. Я могу ввести адрес службы в своем браузере и увидеть значения ответа службы. Когда я пытаюсь сделать то же самое из кода C #, я получаю сообщение об ошибке «Не удалось прослушать конечную точку в ....». Однако я могу вызвать метод POST для службы из кода.

Чего мне не хватает? Ниже код моего контракта

using System;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace WebServiceTest.Services
{
    [ServiceContract]
    public interface ITestOne
    {
        [OperationContract]
        [WebInvoke(
            Method = "GET", 
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "GetGreeting/{text1}/{text2}")]
        string HelloWorld(string text1, string text2);

        [OperationContract]
        [WebInvoke(
            Method = "GET",
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "Greet/{text1}")]
        string HelloWorld2(string text1);

        [OperationContract]
        [WebInvoke(
            Method="GET",
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "Add/{value1}/{value2}")]
        int Add(string value1, string value2);

        [OperationContract]
        [WebInvoke(Method = "POST",
                    ResponseFormat = WebMessageFormat.Json,
                    BodyStyle = WebMessageBodyStyle.Wrapped)]
        String GetAllSpecies();

        [OperationContract]
        [WebInvoke(
            Method = "GET",
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "specie")]
        String GetAllSpecies2();

}

}

1 Ответ

1 голос
/ 13 июля 2010

Я нашел ответ. Проблема заключалась в том, что служба использовала контракт службы ITestOne, а клиент использовал сгенерированный прокси-клиент для ITestOne (полученный через конечную точку MEX). Сгенерированный прокси-сервер не содержал атрибут [WebGet], который содержался в контракте на обслуживание.

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