无法在WCF服务上执行'GET'

时间:2010-07-12 17:07:05

标签: wcf

我有一个包含'GET'和'POST'操作的简单WCF合约。我在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 个答案:

答案 0 :(得分:1)

我找到了答案。问题是该服务正在使用服务合同ITestOne,而客户端正在使用为ITestOne生成的代理客户端(通过MEX端点获得)。生成的代理不包含服务合同包含的[WebGet]属性。