C# 从控制台应用程序访问web API

C# 从控制台应用程序访问web API,c#,asp.net-web-api,console,C#,Asp.net Web Api,Console,在学习WebAPI的过程中,我创建了(或者说实际上VisualStudio有)一个简单的控制器。我还创建了一个WPF程序,该程序可以读取web API的GET()部分,但无法访问其他部分 我尝试了很多,发现很多博客和页面上都写着:“就这样做吧……”但没有任何效果。我做错了什么 MVC部件: namespace MVCWebservice.Controllers { public class LaLaController : ApiController { // G

在学习WebAPI的过程中,我创建了(或者说实际上VisualStudio有)一个简单的控制器。我还创建了一个WPF程序,该程序可以读取web API的GET()部分,但无法访问其他部分

我尝试了很多,发现很多博客和页面上都写着:“就这样做吧……”但没有任何效果。我做错了什么

MVC部件:

namespace MVCWebservice.Controllers
{
    public class LaLaController : ApiController
    {
        // GET: api/LaLa
        public string Get()
        {
            return "Hello from API";
        }

        // GET: api/LaLa/5
        public string Get(int id)
        {
            return "value";
        }

        // POST: api/LaLa
        public void Post([FromBody]string value)
        {
            var a = value;
        }

        // PUT: api/LaLa/5
        public void Put(int id, [FromBody]string value)
        {
            var b = value;
            int c = id;
        }

        // DELETE: api/LaLa/5
        public void Delete(int id)
        {
            int c = id;
        }
    }
}
以及我的控制台应用程序中的一个实际工作的方法:

private static async Task ReadFromWebApi()
{
    System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
    client.BaseAddress = new Uri("http://localhost:26176/");
    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    var resp2 = await client.GetAsync("api/LaLa/");
    resp2.EnsureSuccessStatusCode();
    var aaa = resp2.Content;
    string result = await aaa.ReadAsStringAsync();
    Console.WriteLine(result);
}
一种刚刚停止的方法:

如果我删除
确保成功状态码
,我将恢复以下内容:

ss=“{\”消息\“:\”请求的资源不支持http 方法“PUT.\”}


我将如何编写对其他方法的访问权限?

首先,您正在URL
api/LaLa/
上调用PUT,但来自服务器的方法签名

public void Put(int id, [FromBody]string value)
URL似乎应该包含一个数字id以满足第一个参数,例如
api/LaLa/100
或类似参数。也许您可以将客户端修改为调用
PutAsync()
,如下所示:

var resp2 = client.PutAsync("api/LaLa/100", new System.Net.Http.StringContent("Hey", Encoding.UTF8, "application/json")).Result;

邮局工作吗?看看一个与你的问题非常相似的问题,看看你是否能解决它。

这有帮助吗?谢谢我想我已经试过了。现在我在id中输入了100,但是我的值是Null,我希望它是:“嘿”,你也知道吗?试着用一些有效的json替换“嘿”。也许“{\“value\”:\“Hey\”}”
var resp2 = client.PutAsync("api/LaLa/100", new System.Net.Http.StringContent("Hey", Encoding.UTF8, "application/json")).Result;