在asp .net web forms状态代码404中调用Web API时出错

时间:2016-07-16 11:43:03

标签: c# asp.net asp.net-mvc

  

我创建的Web API工作正常,因为我检查过,但问题是当我在asp .net网站上调用web API时,这里是一个调用web API的代码

protected void btn_search_Click(object sender, EventArgs e)
{
    HClient.BaseAddress = new Uri("http://localhost:50653/");

    HClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    BoiMember obj = new BoiMember();
    obj.CustomerId = txt_customerid.Text.Trim();
    obj.AadhaarNo = txt_aadharno.Text.Trim();
    obj.CustomerName = txt_name.Text.Trim();
    obj.AccountNo = txt_accountno.Text.Trim();
    obj.MobileNo = txt_mobile.Text.Trim();
    obj.branchcd = Session["BranchCode"].ToString();
    obj.ZoneCode = Session["ZoneCode"].ToString();
    obj.Campcd = "1";
    obj.ind = 1;
    obj.SourceType = 2;
    obj.UserId = Session["UserName"].ToString();
    string uri = "api/BoiMember/GetRecord/";
    var response = HClient.GetAsync(uri+obj).Result;

    if (response.IsSuccessStatusCode)
    {
        var GetData = response.Content.ReadAsAsync<IEnumerable<BoiMember>>().Result;
        GvdRecords.DataSource = GetData;
        GvdRecords.DataBind();
    }
    else
    {

    }
}
  

当我在没有参数的情况下调用此Web API时,在名为 BoiMemberController 的API控制器中的位置工作正常,但是当我传递参数时,我得到状态代码404错误未找到。我的网站APIConfig.cs有一个代码

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate:  "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

1 个答案:

答案 0 :(得分:1)

默认执行[some object].ToString()时,ToString方法返回对象类型。所以你可能传递一个类似于api/BoiMember/GetRecord/BoiMember的字符串(不完全限定类型)。您需要使用字符串格式来构建uri。这是一个包含2个参数的基本示例:

var uri = string.Format("api/BoiMember/GetRecord/?customerId={0}&aadhaarNo={1}"
, txt_customerid.Text.Trim()
, txt_aadharno.Text.Trim());

这假设您的参数是查询字符串参数。如果你有一个web api,参数位于url中,那么你需要相应地改变字符串的结构。

如果需要,您还应该进行空检查,如果参数为空,则可能不希望将其发送到api。