Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将变量发送到Web API方法_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 将变量发送到Web API方法

C# 将变量发送到Web API方法,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我在ValuesController类中使用以下方法设置了一个基本的MVC web API项目- // GET api/values/5 public string Get(int id) { return "Success!"; } 把这个打给客户,就像- client.BaseAddress = new Uri("http://localhost:12345/"); client.DefaultRequestHeaders.Accept.Clear(); client.Defaul

我在ValuesController类中使用以下方法设置了一个基本的MVC web API项目-

// GET api/values/5
public string Get(int id)
{
    return "Success!";
}
把这个打给客户,就像-

client.BaseAddress = new Uri("http://localhost:12345/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

 HttpResponseMessage response = await client.GetAsync("api/values/5");
 if (response.IsSuccessStatusCode)
 {
     result = await response.Content.ReadAsStringAsync();
 }
我是相对较新的MVC,但是我正在尝试修改此方法,以接受在数据库调用中使用的字符串变量。比如说-

// GET api/values/number/house/street
public string Get(string no, string house, string street)
{
    // use variables
    return "Success!";
}
HttpResponseMessage response = await client.GetAsync("api/values/" + no + house + street);
 if (response.IsSuccessStatusCode)
 {
     result = await response.Content.ReadAsStringAsync();
 }
然后客户会说-

// GET api/values/number/house/street
public string Get(string no, string house, string street)
{
    // use variables
    return "Success!";
}
HttpResponseMessage response = await client.GetAsync("api/values/" + no + house + street);
 if (response.IsSuccessStatusCode)
 {
     result = await response.Content.ReadAsStringAsync();
 }
我基本上是在尝试将API用作Web服务,但是不确定如何修改它以这样的方式工作


当我尝试上面的代码时,它返回了
错误请求

您可能还没有设置到WebApi服务的路由。 查看此资源,了解如何进行设置:

编辑:
或者,等等!如果可能的话,打电话给你的服务是错误的。如果查看api方法定义,注释会告诉您url应如下所示:

GET api/values/number/house/street
虽然看起来你把它叫做:

GET api/values/NoHouseStreet
因此,值之间没有斜杠。我猜想,如果您将调用的url更改为以下内容,那么应该可以正常工作:

HttpResponseMessage response = await client.GetAsync("api/values/" + no + "/" + house + "/" + street);

我认为你的第一个假设是正确的,因为我尝试了第二个,但失败了:(,我将尝试您的第一个解决方案,如果我能使用它,我将标记为正确谢谢您的输入。很高兴它能使用。但只是为了完整性。问题是缺少斜杠或路由还是两者都有?是路由错误,也是我对MVC缺乏了解。我还必须创建自定义模型和控制器,现在我能够重新请求完美地使用和发送数据。我现在意识到为什么asmx web服务应该被认为是不推荐的。MVC是很棒的东西。