当我用带有特殊字符的字符串参数调用webapi2 GET时出现问题(使用正常字符都可以正常工作)。

AngularJs

this.getByContactValue = function (contactValue) {
        return $http.get("/api/subjects/"+ contactValue+ "/ContactValue" );
    }


C#

[Route("api/subjects/{contactValue}/ContactValue")]
public IEnumerable<Subject> GetByContactValue(string contactValue)
{
    return repository.GetByContactValue(contactValue);
}


响应是404错误。
我也尝试过以这种方式修改请求

this.getByContactValue = function (contactValue) {
        var request = $http({
            method: "get",
            url: "/api/subjects/ContactValue", //modified the route in c# controller
            data: contactValue
        });
        return request;
    }


但是错误是相同的。

调用webapi的最佳方法是哪种?

最佳答案

您必须将查询字符串中的数据传递为

$http({
    url: "/api/subjects/ContactValue",
    method: "GET",
    params: {contactValue: contactValue}
 });


更新你的动作

[Route("api/subjects/ContactValue?contactValue={contactValue}")]
public IEnumerable<Subject> GetByContactValue(string contactValue)
{
    return repository.GetByContactValue(contactValue);
}

10-06 15:29