Asp.net web api web api控制器操作方法

Asp.net web api web api控制器操作方法,asp.net-web-api,Asp.net Web Api,我正在尝试让web api调用工作:我想提交一个电子邮件地址,然后在服务器上,该方法将验证并返回null或消息 这就是我所尝试的: [Post] public string validate(string email) { return this._contextProvider.ValidateEmail(email); } 但是,我将此消息返回给客户机:未找到与请求URI匹配的HTTP资源 有效负载如下所示:{email:Greg@gmail.com

我正在尝试让web api调用工作:我想提交一个电子邮件地址,然后在服务器上,该方法将验证并返回null或消息

这就是我所尝试的:

    [Post]
    public string validate(string email) {
        return this._contextProvider.ValidateEmail(email);
    }
但是,我将此消息返回给客户机:未找到与请求URI匹配的HTTP资源


有效负载如下所示:{email:Greg@gmail.com}

事实证明,问题在于参数绑定

在Web API中,绑定的处理方式与MVC不同。默认情况下,简单类型是从URI提取的,而不是从主体提取的。从消息体中提取复杂类型

然后我将[FromBody]属性添加到Action方法中,然后它找到了Action方法。但是,唉,email参数是空的

public string validate([FromBody]string email) {
        return this._contextProvider.ValidateEmail(email);
    }
事实证明,当使用这个技巧时,主体不能是json,而是像querystring-
电子邮件一样构造=greg@gmail.com
。我不想这样做,所以最终创建了一个类来接受参数,并且按照预期工作

public class ParameterizedAction {
    public string Parameter { get; set; }
}

 public string validate(ParameterizedAction arg) {
        return this._contextProvider.ValidateEmail(arg.Parameter);
 }
本文提供了更多信息:

除了这个: