WCF 自托管服务,参数(字符串)断言失败

WCF self hosted service, parameter (string) assertion fails

我有一个自托管的 wcf 服务,它有三个 OperationContract,其中两个应该接受参数

 [OperationContract]
 [WebInvoke(Method = "GET",
            ResponseFormat = WebMessageFormat.Json,
            UriTemplate = "json/{id}")]
    string JSONData(string id);

基于这个参数我执行一些逻辑和return数据:

public string JSONData(string id)
    {
        if (id == "1")
        {
            string json = "{ \"months\":[{ \"name\":\"January\"},  { \"name\":\"Febuary\"},  { \"name\":\"March\"}  ]}";
            return json;
        }
        else
        {
            return "Id not found, invalid request";
        }
    }

我用邮递员来做这个请求:

然而,无论我填写什么id,我总是得到:

"Id not found, invalid request"

令我更加困惑的是,以下内容确实有效:

 public string JSONData(string id)
    {
        return Data(id);
    }

    private string Data(string id)
    {
        // logic
        return "Data: " + id;
    }

这让我相信,与其说是输入失败,不如说是 if 语句中的断言。

已将逻辑更改为:

  public string JSONData(string id)
    {
        if (id.Equals("name"))
        {
            return "equal";
        }
        else { 
        return Data(id);
        }
    }

    private string Data(string id)
    {
        // logic
        return "Data: " + id;
    }

if 语句中的断言仍然没有完成,但是我看不出我在以这种方式断言字符串相等时做错了什么。

不胜感激。

谢谢。

我不知道你想完成什么,但使用 wcftestclient 我可以return你问的。

这就是你在代码中的调用方式

检查此页答案